アプリケーションの 1 つで Qt ダイアログを使用しています。ヘルプ ボタンを非表示/削除する必要があります。しかし、私は彼のヘルプボタンのハンドルを正確にどこに持っているかを見つけることができません. Qtウィンドウの特定のフラグかどうかはわかりません。
9 に答える
// remove question mark from the title bar
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
デフォルトでは、Qt::WindowContextHelpButtonHintフラグがダイアログに追加されます。これは、ダイアログ コンストラクター のWindowFlagsパラメーターで制御できます。
たとえば、次のようにして、TitleHint フラグと SystemMenu フラグのみを指定できます。
QDialog *d = new QDialog(0, Qt::WindowSystemMenuHint | Qt::WindowTitleHint);
d->exec();
Qt::WindowContextHelpButtonHintフラグを追加すると、ヘルプ ボタンが元に戻ります。
PyQt では次のことができます。
from PyQt4 import QtGui, QtCore
app = QtGui.QApplication([])
d = QtGui.QDialog(None, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
d.exec_()
ウィンドウ フラグの詳細については、Qt ドキュメントのWindowType 列挙型を参照してください。
わかりました、私はこれを行う方法を見つけました。
ウィンドウフラグを処理します。だからここに私が使用したコードがあります:
Qt::WindowFlags flags = windowFlags()
Qt::WindowFlags helpFlag =
Qt::WindowContextHelpButtonHint;
flags = flags & (~helpFlag);
setWindowFlags(flags);
ただし、これを行うと、ダイアログのアイコンがリセットされることがあります。したがって、ダイアログのアイコンが変更されないようにするために、2行を追加できます。
QIcon icon = windowIcon();
Qt::WindowFlags flags = windowFlags();
Qt::WindowFlags helpFlag =
Qt::WindowContextHelpButtonHint;
flags = flags & (~helpFlag);
setWindowFlags(flags);
setWindowIcon(icon);
Windows 7、Qt 5.2 でこの問題に遭遇しました。私にとって最適なフラグの組み合わせは次のとおりです。
Qt::WindowTitleHint | Qt::WindowCloseButtonHint
これにより、閉じるボタンが機能しますが、疑問符のヘルプボタンは表示されません。Qt::WindowTitleHint または Qt::WindowSystemMenuHint を使用すると、ヘルプ ボタンがなくなりましたが、閉じるボタンも無効になりました。
Michael Bishop が示唆したように、この組み合わせにたどり着いたのは windowflags の例で遊んでいたときでした。ありがとう!
ここにリストされている回答は機能しますが、自分で回答するには、サンプル プログラムを実行することをお勧めします$QTDIR/examples/widgets/windowflags
。これにより、ウィンドウ フラグとその効果のすべての構成をテストできます。リスのようなウィンドウ フラグの問題を解決するのに非常に役立ちます。
スロットが見つかりませんでしたが、仮想winEvent
関数をオーバーライドできます。
#if defined(Q_WS_WIN)
bool MyWizard::winEvent(MSG * msg, long * result)
{
switch (msg->message)
{
case WM_NCLBUTTONDOWN:
if (msg->wParam == HTHELP)
{
}
break;
default:
break;
}
return QWizard::winEvent(msg, result);
}
#endif