Проблемы с QDialog в Qt - PullRequest
       16

Проблемы с QDialog в Qt

2 голосов
/ 20 апреля 2010

Я использую Qt для Symbian. У меня есть некоторые проблемы с QDialog, который я открываю из QMenu. QDialog отображается нормально, а в QDialog у меня есть QDialogButtonBox с кнопкой для закрытия QDialog. НО, если я закрою QDialog и затем снова открою его из QMenu, он появится, но кнопка из QDialogButtonBox не появится. Вместо этого будут отображаться кнопки из окна QMainWindow, но они неактивны.

Как мне заставить кнопки QDialog показываться каждый раз? Может быть, у меня есть некоторые проблемы с настройкой фокуса на QDialog? Я действительно не вижу, что я делаю здесь не так.

Я использую не так много кода, вы можете попробовать его сами. Это мой код:

В QMainWindow я использую следующее для создания меню:

QAction *menuButton = new QAction("Menu", this);
menuButton->setSoftKeyRole(QAction::PositiveSoftKey);

QMenu *menu = new QMenu(this);
menuButton->setMenu(menu);

QAction *popup = new QAction("Show popup",this);
connect(popup, SIGNAL(triggered()), this, SLOT(showPopup()));
menu->addAction(popup);

addAction(menuButton);

Показывает QDialog:

void MyMainWindow::showPopup(){
TestDialog *test = new TestDialog(this);
test->setAttribute(Qt::WA_DeleteOnClose);
test->show();
}

Это TestDialog:

TestDialog::TestDialog(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
QDesktopWidget* desktopWidget = QApplication::desktop();
QRect rect = desktopWidget->availableGeometry();
this->setFixedWidth(rect.width());
}

1 Ответ

0 голосов
/ 13 апреля 2011

Если вы хотите, чтобы ваш диалог был модальным, используйте exec ().В противном случае, вы должны использовать show () и повысить (), чтобы сделать его сверху.

...