Как я могу отключить или скрыть кнопку отмены по умолчанию в QFileDialog? - PullRequest
1 голос
/ 19 сентября 2019

Я пытаюсь использовать QFileDialog в качестве виджета, чтобы использовать QFileDialog в качестве виджета. Последний шаг для меня - отключить кнопку отмены.

У вас есть представление о том, как я могуотключите эту кнопку.

PS: я использую Qt 5.5.0

Ответы [ 2 ]

3 голосов
/ 19 сентября 2019

Вы должны иметь доступ к различным стандартным кнопкам через QDialogButtonBox и оттуда делать то, что вы хотите, с помощью кнопки Cancel.

Следующий пример кодаработает как положено ...

QFileDialog fd;

/*
 * Find the QDialogButtonBox.
 */
if (auto *button_box = fd.findChild<QDialogButtonBox *>()) {

  /*
   * Now find the `Cancel' button...
   */
  if (auto *cancel_button = button_box->button(QDialogButtonBox::Cancel)) {

    /*
     * ...and remove it (or disable it if you prefer).
     */
    button_box->removeButton(cancel_button);
  }
}
fd.show();
1 голос
/ 19 сентября 2019

Класс QFileDialog , похоже, не имеет никакой возможности для этого.

Однако вы можете создать свой собственный файловый браузер, используя QTreeModel и QTreeView (это не так уж сложно).

Существует руководство по тому, как это сделать здесь .

Потребуется некоторое время, чтобы набрать весь код (извините, я медленный типер), но это руководство должно позволить вам иметь гибкость, необходимую вам для того, чтобы делать то, что вы хотите.

Я понимаю, что этот ответ не совсем то, что вы просили, но я надеюсь, что это хорошая альтернатива.

РЕДАКТИРОВАТЬ: случайно вставлена ​​неправильная ссылка для класса QFileDialog

...