[英]Qt showing a dialog as frameless when called from main window
我正在学习qt,正在尝试从书中举一个例子,我们必须在主窗口应用程序中调用预制对话框。
我已经创建了一个对话框,该对话框将用于输入字符串(将其称为findDialog),输入的字符串将传递到QTableWidget中的自定义插槽,以搜索输入的字符串。
触发名为“查找”的动作后,我可以立即调用对话框,但是问题是对话框显示为无框架。
我正在这样调用对话框,请指出任何错误。
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);
显示为一个窗口
您必须创建finddialog
适当Qt::WindowFlags
。 参见文档: Qt :: WindowFlags 。 例如:
finddialog = new findDialog(this, Qt::Window);
指示窗口小部件是一个窗口,通常具有窗口系统框架和标题栏,而与窗口小部件是否具有父级无关。 请注意,如果小部件没有父级,则无法取消设置此标志。
也是有用的例子 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.