Диалог открывается двумя кнопками, OK и Отмена. Ни одна из кнопок не реагирует на щелчок пользователя. Я должен нажать X в правом верхнем углу, чтобы отменить диалог.Qt, кнопки QDialog не Respondig
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (obj == mTabWidget && event->type() == QEvent::MouseButtonDblClick)
{
// query and set tab(s) names
QTabWidget *tab = qobject_cast<QTabWidget *>(obj);
if(tab)
{
QDialog dlg;
QVBoxLayout la(&dlg);
QLineEdit ed;
la.addWidget(&ed);
QDialogButtonBox bb(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
la.addWidget(&bb);
dlg.setLayout(&la);
if(dlg.exec() == QDialog::Accepted)
{
tab->setTabText(0, ed.text());
return true;
}
}
}
// Standard event processing
return QObject::eventFilter(obj, event);
}
Я пропустил какой-либо connect()
линии или сигналы? Я попытался прочитать документацию Qt, но из того, что понял, вызов QDialogButtonBox::OK
обрабатывается как принятый.
UPDATE:
Новый диалог Функция
ОК, я создал новую функцию, которая заботится о диалоговом окне, я зову его из функции событий. он все еще не отвечает, теперь на терминале я вижу ошибку, которая говорит: нет такого слота MainWindow :: accept() и другого для отклонения. Я знаю, что у меня нет слотов для этих двух файлов .h. я попытался найти, как построить слоты, но я не мог, любая помощь была бы замечательной. спасибо
void MainWindow::initializeBOX()
{
QDialog dlg;
QVBoxLayout la(&dlg);
QLineEdit ed;
la.addWidget(&ed);
//QDialogButtonBox bb(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
//btnbox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
la.addWidget(buttonBox);
dlg.setLayout(&la);
if(dlg.exec() == QDialog::Accepted)
{
mTabWidget->setTabText(0, ed.text());
}
}
Немного подозрительно, что вы 'exec 'в диалоговом окне фильтра событий. Вероятно, это блокирует обработку дальнейших событий. –
Любая причина, по которой вы не используете статический ['QString QInputDialog :: getText (...)'] (http://qt-project.org/doc/qt-4.8/qinputdialog.html)? Мне кажется, что вы ничего не делаете, чтобы предотвратить использование. – Bowdzone
@Andrew я отредактировал мой код, можете ли вы проверить новую функцию. он все еще не отвечает на нажатую кнопку – AAFF