QDialogBu​​ttonBox按钮没有响应

时间:2014-11-20 04:17:42

标签: c++ qt signals-slots qt-designer qdialog

当我运行以下功能时,对话框会显示所有内容。问题是按钮不会连接。 “确定”和“取消”不响应鼠标点击。

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()那样的插槽。

1 个答案:

答案 0 :(得分:4)

您在连接中指定了错误的接收器。这是包含accept()reject()广告位的对话框,而不是主窗口(即this)。

所以,相反,你只需要:

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

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