我正在学习qt,并试图从书中获取示例,我们必须从主窗口应用程序调用预制对话框。Qt显示从主窗口调用时无框对话框
我已经做了一个对话框,用于输入一个字符串(我们称之为findDialog),输入的字符串被传递给QTableWidget中的自定义槽以搜索输入的字符串。
只要触发一个名为“find”的操作,我就可以调用对话框,但问题是对话框显示为无框。
我打电话给这样的对话框,请指出任何错误。
void MainWindow::find()
{
// Check whether findDialog is already created
if(!finddialog)
{
// create find dialog as a child to main window
finddialog = new findDialog(this);
// Connecting signals and slots
connect(finddialog,SIGNAL(forwardSearch(QString,Qt::CaseSensitivity)),
sheetObject,SLOT(forwardSearch(QString,Qt::CaseSensitivity)));
connect(finddialog,SIGNAL(backwardSearch(QString,Qt::CaseSensitivity)),
sheetObject,SLOT(backwardSearch(QString,Qt::CaseSensitivity)));
}
// Show dialog
finddialog->show();
finddialog->move(200,200);
// Raise if minimised
finddialog->raise();
// Activate it
finddialog->activateWindow();
}
我不能使用exec因为我没有将findDialog中的accept()槽连接到任何东西。
我也附上一张照片,显示对话时它已被调用。请告诉我我已经完成的错误以及如何使用框架显示对话框。
我编辑的代码,但它是表示作为 '错误:对呼叫“FindDialog的不匹配的函数:: findDialog(MainWindow *,Qt :: WindowType)' finddialog = new findDialog(this,Qt :: Dialog);' –
即使做了这个---> public: 显式的findDialog(QWidget * parent = 0, Qt :: WindowType = Qt :: Window); 〜findDialog();' 它仍然没有显示框架。 –
如果'FindDialog'继承了'QDialog',它将自动产生'Qt :: Window'标志,参见docs [here](https://doc.qt.io/qt-5/qdialog.html#QDialog)和代码[here](https://code.qt.io/cgit/qt/qtbase.git/tree/src/widgets/dialogs/qdialog.h#n60)。每次你想实例化一个FindDialog时,请不要传递这样的内容。相反,将你想要的行为设为**默认的**行为,并且只是实例化你的FindDialog.you你将不得不通过标志**当你想要标志而不是'Qt :: Window'时。 – Mike