繁体   English   中英

Qt从主窗口调用时将对话框显示为无框架

[英]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()插槽连接到任何东西。

我还要附上一张显示对话框被调用时的图片。 请告诉我我做的错误以及如何显示带有框架的对话框。 没有框架的findDialog

得到它了,

在显示对话框之前,我必须使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM