我正在学习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()插槽连接到任何东西。
答案 0 :(得分:1)
知道了,
在显示对话框之前,我必须使用setWindowFlags设置窗口标志。
finddialog->setWindowFlags(Qt::Dialog);
将其显示为对话框
or
finddialog->setWindowFlags(Qt::Window);
将其显示为窗口
答案 1 :(得分:0)
您必须使用适当的finddialog
创建Qt::WindowFlags
。请参阅文档:Qt::WindowFlags。例如:
finddialog = new findDialog(this, Qt::Window);
表示窗口小部件是一个窗口,通常带有窗口系统 框架和标题栏,无论窗口小部件是否具有父级 或不。请注意,如果窗口小部件无法取消设置此标志 没有父母。