我想从 Qt 对话框中删除“?”按钮,如此处所述,但不知何故它不起作用。
这是我的代码:
Qt::WindowFlags flags;
flags = (Qt::Dialog | Qt::WindowStaysOnTopHint) &
~Qt::WindowContextHelpButtonHint;
setWindowFlags( flags );
我认为按位运算符有问题,但我不知道是什么..
这对我来说很好:
QDialog *dialog = new QDialog;
Qt::WindowFlags flags(Qt::WindowTitleHint);
dialog->setWindowFlags(flags);
然而,最常见的方法是在构造函数中传递标志:
QDialog *dialog = new QDialog(0, Qt::WindowTitleHint);
编辑:我认为对 QFlags 运算符存在误解(请参阅下面的评论)。这个例子可能会清除它:
Qt::WindowFlags flags(Qt::Dialog | Qt::WindowStaysOnTopHint);
qDebug() << flags.testFlag(Qt::WindowContextHelpButtonHint); // false because the flag hasn't been added
flags = flags | Qt::WindowContextHelpButtonHint;
qDebug() << flags.testFlag(Qt::WindowContextHelpButtonHint); // true because it has been added
flags = flags & ~Qt::WindowContextHelpButtonHint;
qDebug() << flags.testFlag(Qt::WindowContextHelpButtonHint); // false because it has been removed
倒数第二行代码Qt::WindowContextHelpButtonHint
从flags
. 它不添加“否定”标志。
至少这是我的理解。