これは私にとってはうまくいきます:
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
最後から 2 番目のコード行がQt::WindowContextHelpButtonHint
から削除されflags
ます。「ネガティブ」フラグは追加されません。
少なくともそれは私の理解です。