QDialogButtonBox按钮无响应

4
当我运行以下函数时,对话框显示出来且所有内容都已放置妥当。问题在于按钮无法连接。点击鼠标后,确定和取消没有响应。
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());
        }

      }

运行时,cmd中出现错误:没有accept()和reject()这样的插槽。


你的 MainWindow 中有 accept()reject() 的插槽吗? - Nejat
不,那正是我想做的。我添加了Void accept(),但它不起作用。我是Qt的新手,你能向我展示如何添加SLOT吗?谢谢@Nejat - AAFF
1个回答

7

您在连接中指定了错误的接收器。具有accept()reject()槽的是对话框,而不是主窗口(即this)。

因此,您只需要:

 connect(buttonBox, SIGNAL(accepted()), &dlg, SLOT(accept()));
 connect(buttonBox, SIGNAL(rejected()), &dlg, SLOT(reject()));

现在当您点击按钮时,对话框将关闭,并且exec()将返回QDialog::Accepted表示确认,或者QDialog::Rejected表示取消。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接