gpt4 book ai didi

c++ - QDialog - 更改默认标志以排除?按钮

转载 作者:行者123 更新时间:2023-11-30 02:39:38 25 4
gpt4 key购买 nike

默认情况下,QDialog 应用一个标志(我不确定是哪个),使问号按钮出现在右上角。我有一个继承自 QDialogLogin 类,我可以通过显式传递一组更小的标志来摆脱这个问号按钮

Login::Login(QWidget *parent) : QDialog(parent, Qt::WindowCloseButtonHint), ui(new Ui::Login) {}

但是,我也在我的程序中使用了其他对话框,例如QMessageBoxQInputDialog

所以我的问题是:QDialog 使用的所有默认标志是什么,有没有一种方法可以设置默认值,这样我就不必自己传递标志(可能容易受到攻击省略一些对跨平台能力很重要的)每次我初始化一个新的QDialog?

最佳答案

你可以这样做:

Login::Login(QWidget *parent) : QDialog(parent, QDialog( ).windowFlags() & ~Qt::WindowContextHelpButtonHint ), ui(new Ui::Login) {}

~是位取反运算符。

windowFlags() 包含 QDialog 的默认标志。

同样适用于不同的标志,因此您不会修改您不想修改的标志。

您询问了默认标志:

QFlags(0x1|0x2|0x1000|0x2000|0x10000|0x8000000)

要创建默认值,您可以创建一个包含您喜欢的 WindowFlags 的全局变量。

例如:

QFlags< Qt::WindowFlags > defaultFlags;

defaultFlags = QDialog( ).windowFlags( );

defaultFlags = defaultFlags & ~Qt::WindowContextHelpButtonHint;

现在每当您创建一个对话框时,您都可以将 defaultFlags 作为第二个参数传递。


或者,您可以围绕 QDialog 类编写一个包装器,然后您可以根据自己的喜好对其进行完全修改并使用它,而无需添加额外的参数或重复您自己:

class CustomDialog : public QDialog
{
Q_OBJECT

public:
explicit CustomDialog( QWidget *parent = 0);

};

关于c++ - QDialog - 更改默认标志以排除?按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29592591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com