私は最近のQtを勉強して、以下の質問を持ってきた:QAction vs QToolButtonと、いつBasicクラスをオーバーライドするのですか?
QAction
とQToolButton
の違いは何ですか?QPushButton
を無効にする方法を知りたいのですが?たとえば、マウスがQPushButton
の境界に入ったときに通知するためにオーバーライドする必要がありますか?私は入手するためにする必要はありませんsignal
click()
。
私は最近のQtを勉強して、以下の質問を持ってきた:QAction vs QToolButtonと、いつBasicクラスをオーバーライドするのですか?
QAction
とQToolButton
の違いは何ですか?QPushButton
を無効にする方法を知りたいのですが?たとえば、マウスがQPushButton
の境界に入ったときに通知するためにオーバーライドする必要がありますか?私は入手するためにする必要はありませんsignal
click()
。質問1:
QAction
Sは、異なるユーザインターフェイスオブジェクトの数で理解できるように、アプリケーションによって実行されるタスクを定義するために使用されます。コンテキストの場合はexample from the Qt docsを使用:
QAction
が定義されています。それは、アイコン画像、テキスト記述、キーボードショートカット、およびより長いツールチップ記述を与えられ、ユーザ定義関数にリンクされる。
newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this);
newAct->setShortcuts(QKeySequence::New);
newAct->setStatusTip(tr("Create a new file"));
connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
その後の実装では、QAction
が両方のテキストのメニューバーに追加されます...
fileMenu->addAction(newAct);
...とアイコンベースのツールバー:
fileToolBar->addAction(newAct);
メニューバーは、テキストの説明を使用して、アクションに対応するメニュー項目を作成します。同様に、ツールバーはQAction
に設定されたアイコンを使用して、アクションに対応するアイコンをツールバーに作成します。メニューアイテムを選択するか、ツールバーアイコンをクリックするか、キーボードショートカットを押すと、すべて同じ結果になります。QAction::triggered()
からnewFile()
へのリンクによって定義されたものと同じです。 QAction
は、様々なパラメータおよびアプリケーションによって実行される特定のタスクの振る舞いを定義する抽象方法です。だから、直接あなたの質問に答えるために
。はい、QPushButton
はQAbstractButton
から継承clicked()
signal
を有するが、それがない
:QToolbarButton
はQToolbar::addAction()
質問2に応答してQToolbar
によって作成された(QWidget
由来)UIオブジェクトであります実際にマウスがその境界に入った時を知らせる手段がない。これを達成するにはいくつかのオプションがありますが、最初にmouseTracking
プロパティを有効にするように設定する必要があります。これにより、マウスボタンが押されていなくてもQPushButton
でマウス移動イベントを受け取ることができます。それが行わを使用すると、次のいずれかのオプションを検討する必要があります。
QPushButton
をサブクラス化して、マウスの位置に対応するためにmousePressEvent
を再実装できます。QPushButton
に別のウィジェットをeventFilter
としてインストールし、(QEvent::MouseMove
)のイベントを監視することができます。あなたに非常に感謝します...あなたの考えは明確で、いいです –
2番目の質問を言い換えることができますか?それは意味をなさない。 – cmannett85
私はそれを編集hava ..ありがとう... –
なぜdownvotes?これは新しいユーザーからの助けのための非常に有効な(未検出の)要求です... – sjwarner