QDialog - 更改默认标志以排除?按钮
QDialog - Change default flags to exclude ? button
默认情况下,QDialog
会应用一个标志(我不确定是哪个标志),使问号按钮出现在右上角。我有一个 class Login
继承自 QDialog
,我可以通过显式传递一组更小的标志来摆脱这个问号按钮
Login::Login(QWidget *parent) : QDialog(parent, Qt::WindowCloseButtonHint), ui(new Ui::Login) {}
但是,我的程序中也使用了其他对话框,例如QMessageBox
和QInputDialog
。
所以我的问题是: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 编写一个包装器,然后您可以根据自己的喜好完全修改并使用它,而无需添加额外的参数或重复自己:
class CustomDialog : public QDialog
{
Q_OBJECT
public:
explicit CustomDialog( QWidget *parent = 0);
};
默认情况下,QDialog
会应用一个标志(我不确定是哪个标志),使问号按钮出现在右上角。我有一个 class Login
继承自 QDialog
,我可以通过显式传递一组更小的标志来摆脱这个问号按钮
Login::Login(QWidget *parent) : QDialog(parent, Qt::WindowCloseButtonHint), ui(new Ui::Login) {}
但是,我的程序中也使用了其他对话框,例如QMessageBox
和QInputDialog
。
所以我的问题是: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 编写一个包装器,然后您可以根据自己的喜好完全修改并使用它,而无需添加额外的参数或重复自己:
class CustomDialog : public QDialog
{
Q_OBJECT
public:
explicit CustomDialog( QWidget *parent = 0);
};