C++ QDialog-更改默认标志以排除?按钮
默认情况下,C++ QDialog-更改默认标志以排除?按钮,c++,qt,qdialog,C++,Qt,Qdialog,默认情况下,QDialog应用一个标志(我不确定是哪个标志)使问号按钮出现在右上角。我有一个类Login,它继承自QDialog,我可以通过显式地传递一组更简单的标志来摆脱这个问号按钮 Login::Login(QWidget *parent) : QDialog(parent, Qt::WindowCloseButtonHint), ui(new Ui::Login) {} 但是,我也在程序中使用其他对话框,如QMessageBox和QInputDialog 因此,我的问题是:QDialog
QDialog
应用一个标志(我不确定是哪个标志)使问号按钮出现在右上角。我有一个类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;
我懂了。更改默认值怎么样,这样我就不必为我调用的每个实例键入/复制粘贴否定操作了?这个想法在我脑海中闪过。我希望有一些东西能够更新默认值,但这可能是不可能的(不知道Qt是否有一个方法来公开它)。如果你能确认这样一个方法没有公开,或者如果24小时内没有更好的答案出现,我将把它标记为答案。@同化者,我怀疑这是可能的,至少我不知道怎么做,但不同的解决方案是在QDialog周围写一个包装器,你可以根据自己的喜好完全修改它。至少我会这么做it@Assimilater在不修改源代码的情况下,无法更改默认值。最好的选择是使用帮助函数来创建对话框,您可以在其中设置所需的标志。@同样,您也可以创建一个包装器来包装QInputDialog+QLineEdit
class CustomDialog : public QDialog
{
Q_OBJECT
public:
explicit CustomDialog( QWidget *parent = 0);
};