【发布时间】:2015-01-20 18:22:51
【问题描述】:
我有一个 mainWindow 类,它在双击 QTabBar 时调用函数 mainWIndow::ShowDialogBox()。对话框出现,但没有连接按钮。我在 ShowDialogBox 中有连接调用。它给我一个红色下划线连接说
no instance of overloaded function "MainWindow::connect" matches the argument list"
这是我的代码
bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
if (object == mTabWidget->getTabBar() && event->type() == QEvent::MouseButtonDblClick)
{
qDebug()<<"dblclk";
ShowDialogBox();
}
return QObject::eventFilter(object, event);
}
//Show dialog box when double clicked on QTabBar
void MainWindow::ShowDialogBox(){
QDialog dialog;
QVBoxLayout layout(&dialog);
QLineEdit editLine;
layout.addWidget(&editLine);
QDialogButtonBox *dialogButton = new QDialogButtonBox(QDialogButtonBox::Ok );
connect(dialogButton, SIGNAL(accepted()), dialog, SLOT(accept())); //this 'connect' is underlined
layout.addWidget(dialogButton);
dialog.setLayout(&layout);
if(dialog.exec() == QDialog::Accepted)
{
mTabWidget->setTabText(0, editLine.text());
}
}
我在 mainWindow.h 中添加了信号和槽
private slots:
void accept();
signals:
void accepted();
我在这上面花了几个小时,但没有运气。我是 Qt 新手。
【问题讨论】:
-
你有没有自己实现的
MainWindow::connect函数? -
@luliu :不。我们必须这样做吗?正如我所说,我是新人,所以无法真正弄清楚。
-
否...
MainWindow是否继承QMainWindow?如果将connect替换为QObject::connect会发生什么? -
@luliu 是的,它继承了
QMainWindow。当我用QObject::connect替换 connect 时,它会给出错误 no instance of overloaded functionQObject::connectmatches the argument list" -
您是否尝试过运行
qmake(Build->Run qmake) 然后进行重建?
标签: signals-slots qt-designer qdialog