我正在学习 qt 并正在尝试书中的示例,其中我们必须从主窗口应用程序调用预制对话框。
我已经制作了一个用于输入字符串的对话框(我们称之为 findDialog),输入的字符串被传递到 QTableWidget 中的自定义插槽以搜索输入的字符串。
一旦触发名为“查找”的操作,我就可以调用该对话框,但问题是该对话框显示为无框。
我是这样调用dialog的,有错误请指出。
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() 插槽连接到任何东西。
最佳答案
明白了
在显示对话框之前,我必须使用 setWindowFlags 设置窗口标志。
finddialog->setWindowFlags(Qt::Dialog);
将其显示为对话框
or
finddialog->setWindowFlags(Qt::Window);
将其显示为一个窗口
关于c++ - 当从主窗口调用时,Qt 将对话框显示为无框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39469019/