当我运行以下功能时,对话框会显示所有内容。问题是按钮不会连接。 “确定”和“取消”不响应鼠标点击。
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()那样的插槽。
答案 0 :(得分:4)
您在连接中指定了错误的接收器。这是包含accept()
和reject()
广告位的对话框,而不是主窗口(即this
)。
所以,相反,你只需要:
connect(buttonBox, SIGNAL(accepted()), &dlg, SLOT(accept()));
connect(buttonBox, SIGNAL(rejected()), &dlg, SLOT(reject()));
现在当您点击按钮时,对话框将关闭,exec()
将返回QDialog::Accepted
表示确定,或QDialog::Rejected
表示取消。