从Qt对话框中删除“?” - 按钮

时间:2012-11-04 19:56:28

标签: c++ qt

我想从Qt对话框中删除“?” - 按钮,如解释here,但不知何故它不起作用。

这是我的代码:

Qt::WindowFlags flags;
flags = (Qt::Dialog | Qt::WindowStaysOnTopHint) & 
          ~Qt::WindowContextHelpButtonHint;
setWindowFlags( flags );

我认为按位运算符有问题,但我不知道是什么......

1 个答案:

答案 0 :(得分:2)

这对我来说很好用:

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。它添加&#34;否定&#34;标志。

至少这是我的理解。