かにすることができま削除するには?helpボタンをタイトルバー"のQtダイアログを?

StackOverflow https://stackoverflow.com/questions/81627

  •  09-06-2019
  •  | 
  •  

質問

を使用していQtダイアログに私の願います。いhide/削除のボタンを押します。がることはできませんの検索がうかを取得し取り扱いつもお世話になっボタンを押します。だがその特定のフラグは、Qtウインドウです。

役に立ちましたか?

解決

デフォルトでは、 Qt::WindowContextHelpButtonHint フラグが追加ダイアログ.制御できること WindowFlags パラメータを、ダイアログのコンストラクタです。

のためのインスタンスを指定できるの TitleHintSystemMenu 旗のように:

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_()

より詳細画面フラグできるので、 WindowType enum のQt sdkです。

他のヒント

// remove question mark from the title bar
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);

Ok、この方法ではないかと思います。

なに窓がつきます。このコードを使用した:

Qt::WindowFlags flags = windowFlags()

Qt::WindowFlags helpFlag =
Qt::WindowContextHelpButtonHint;

flags = flags & (~helpFlag);   
setWindowFlags(flags);

が、その時のアイコンをダイアログがリセットします。いかどうかを確認するためのアイコンで表示するには、ダイアログのない変更できます。

QIcon icon = windowIcon();

Qt::WindowFlags flags = windowFlags();

Qt::WindowFlags helpFlag =
Qt::WindowContextHelpButtonHint;

flags = flags & (~helpFlag);   

setWindowFlags(flags);

setWindowIcon(icon);

またこの問題に関するWindows7、Qt5.2、フラグの組み合わせたベストだったことを今でも覚えています:

Qt::WindowTitleHint|Qt::WindowCloseButtonHint

それは私に働く閉じるボタンでマークヘボタンを押します。だけを使い、Qt::WindowTitleHint Qt::WindowSystemMenuHintんなのボタンでも無効のボタンを押します。

としてマイケル-ビショップが、このwindowflagsえることができると考えてい組み合わせです。よろしく!

としてのQt5.10きを無効にすることができますがこれらのボタンをグローバルに単一の QApplication 属性!

QApplication::setAttribute(Qt::AA_DisableWindowContextHelpButton);

の答えがここに記載すが、答えによら自分でもお薦めのプログラムの例 $QTDIR/examples/widgets/windowflags.することなく試験すべての構成ウィンドウのフラグ。非常に役立つコーヒーに飽きたら寿司に出squirrelly windowflagsます。

以下の方法を教えてく質問マークはデフォルトで全てのダイアログに応用でき:

添付により、以下のイベントフィルター QApplication どこかのプログラム:

  bool eventFilter (QObject *watched, QEvent *event) override
  {
    if (event->type () == QEvent::Create)
      {
        if (watched->isWidgetType ())
          {
            auto w = static_cast<QWidget *> (watched);
            w->setWindowFlags (w->windowFlags () & (~Qt::WindowContextHelpButtonHint));
          }
      }
    return QObject::eventFilter (watched, event);
  }

が見出せなかったのでスロットものをオーバーライドすることができる仮想 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top