QDialog缺少边框

Posted

技术标签:

【中文标题】QDialog缺少边框【英文标题】:QDialog missing border 【发布时间】:2016-10-20 06:47:01 【问题描述】:

当我尝试显示 QDialog 时,它出现在屏幕的左上角,没有边框。内容正确呈现,但缺少边框。

即使我使用各种 WindowHint 和 WindowType,例如 Qt::Widget、Qt::Dialog 或 Qt::WindowTitleHint => 没有任何改变!

感谢任何提示!

编辑:我在 Windows 和工作中尝试使用相同的 SW(也许 ifdef 会有所不同......)


操作系统:Ubuntu 16.04

QT:5.6.1

MyDialog.cpp

MyDialog::MyDialog(MyDialog::MyDialogTypes type, QWidget *parent) :
    QDialog(parent) ,
    ui(new Ui::MyDialog)

    ui->setupUi(this);
    setDialogType(type);

MainWindow.cpp

bool MainWindow::confirm() 

    MyDialog dlg(MyDialog::Type1, this);
    dlg.setWindowTitle("ABC");

    return dlg.exec() != QDialog::Accepted

【问题讨论】:

在 linux 上,对于普通的 Qt,您需要运行一个窗口管理器来渲染框架并负责调整大小和定位。 【参考方案1】:

您可以通过在布局上调用setContentMargins 来通过代码设置边框宽度。例如:

ui->myQDialog->setContentsMargins(3,3,3,3); // sets the qdialog border width to 3px.

【讨论】:

@Sirius Windows 边框和布局边距不同。您的代码只会为布局设置边距。【参考方案2】:

我找到了解决方案。它在代码之外。我的一位同事更改了 Ubuntu 配置以强制我的应用程序全屏显示。所以不仅主窗口是全屏的,所有其他窗口和消息框也是全屏的。我们对此进行了更改,并且可以正常工作。

我不想这样删除这个问题,以便其他一些读者有同样的问题(或同样的好同事:-))

【讨论】:

以上是关于QDialog缺少边框的主要内容,如果未能解决你的问题,请参考以下文章

如何像 Skype 一样将 QDialog 粘贴到屏幕边框?

Qt - QDialog,QWidget实现模态及非模态(模态Widget不能有父窗口,如果设置无边框就不能阻塞父窗口,但是可以强行设置指定Qt::Dialog,还可以setAttribute(Qt:

Qt QDialog 设置圆角

Qt仿360安全卫士界面(自定义阴影边框类)

Qt仿360安全卫士界面(自定义阴影边框类)

Qt仿360安全卫士界面(自定义阴影边框类)