Как получить информацию для дизайнера Qt

Я создал диалоговое окно Qdialog с помощью дизайнера создателя Qt, как показано ниже:

dialogoverwrite.ui

Когда мне нужно отобразить его, я создаю экземпляр класса dialogoverwrite (.cpp, .h и .ui)

DialogOverwrite *OverwriteDialog = new DialogOverwrite;
OverwriteDialog->exec();
OverwriteOption = OverwriteDialog->result()

Моя проблема в том, что я хочу получить результат QDialogButtonBox, но я не знаю, как это сделать. текущий код, возвращающий результат OverwriteDialog, но не возвращающий QDialogButtonBox::Yes, QDialogButtonBox::YesToAll...

Как поймать результат QButtonGroup, а не результат QDialog.

Точно так же, если я хочу изменить значение метки с «Файл (ы) и / или папка (ы)» на другую метку, как получить доступ к этой QLabel?

Спасибо за вашу помощь


person Seb    schedule 01.04.2015    source источник


Ответы (2)


Когда вы нажали QDialogButton, был нажат сигнал испускания (QAbstractButton*), перехватив этот сигнал, вы можете определить, какая кнопка действия нажата.

Пожалуйста, перейдите по следующей ссылке, это поможет вам.

Qt: как реализовать QDialogButtonBox с QSignalMapper для не -стандартная кнопка ??

person Dipak D Desai    schedule 01.04.2015

Что ж, стандартный способ сделать это — обработать результат, подключив его. Итак, вы можете сделать:

connect(this, SIGNAL(clickedDialogButton(QAbstractButton*)), 
    SLOT(dialogButton(QAbstractButton* aButton)));

Затем вы должны создать функцию в своем классе с именем dialogButton (например) и обработать результат:

void MyUI::dialogButton(QAbstractButton* aButton) {
    // Obtain the standard button
    StandardButton button = buttonBox−>standardButton(button);  

    // Switch on the type of button
    switch (button) {
    case QDialogButtonBox::YesToAll:
        // Do the thing you would like to do here
        break;
    // add some more cases?
    }
}

Вы также можете проверить сигнал, подаваемый файлом QButtonGroup. Что-то вроде: void QGroupButton::buttonClicked(QAbstractButton* button) будет работать таким же образом.

person Floris Velleman    schedule 01.04.2015
comment
Мне пришлось изменить строку buttonBox на эту из-за проблем со сборкой QDialogButtonBox::StandardButton button = Ui_DialogOverwrite::buttonBox-›QDialogButtonBox::standardButton(aButton); но у меня все еще есть проблема при сборке: неправильное использование buttonBox - person Seb; 01.04.2015
comment
Вероятно, это потому, что вы должны сохранить OverwriteDialog и использовать его для получения кнопки, например: OverwriteDialog->buttonBox->standardButton(button);. В приведенном мной примере я предполагал, что вы уже сделали это (поэтому я просто дал ему случайное имя buttonBox). - person Floris Velleman; 01.04.2015
comment
Спасибо, но buttonBox не указан как часть OverwriteDialog. .ui включает его, но в классе ничего не происходит - person Seb; 01.04.2015
comment
Вместо buttonBox используйте имя, которое у вас есть для элемента группы. - person Floris Velleman; 01.04.2015