QDockWidgetのタイトルを右クリックすると、アプリケーション内のすべてのQDockWidgetのリストが表示されます。このbeheavorを無効にするに 私はQt:QDockWidgetのタイトルでの右クリック操作
class QMyTitleBar : public QLabel
{
public:
QMyTitleBar(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()) : QLabel(parent, f)
{
}
QMyTitleBar(const QString &text, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()) : QLabel(text, parent, f)
{
}
~QMyTitleBar()
{
}
protected:
void mouseReleaseEvent(QMouseEvent * qevent) override
{
if (qevent->button() == Qt::MouseButton::RightButton)
{
qevent->accept();
return;
}
}
void mousePressEvent(QMouseEvent * qevent) override
{
if (qevent->button() == Qt::MouseButton::RightButton)
{
qevent->accept();
return;
}
}
と私のQDockWidgetにこのカスタムタイトルウィジェット
myDockWidget->setTitleBarWidget(new QMyTitleBar(QObject::tr("My Title")));
が、これは動作しませんを設定し、特別なタイトルクラスを実装しました。マウスイベントを処理しますが、すべてのQDockWidgetsを含むメニューが表示されます。 このメニューを削除するにはどうすればよいですか?
試してください。(親、Qtの:: [ウィンドウ| Qtの:: WindowStaysOnTopHint | Qtの:: X11BypassWindowManagerHint | Qtの:: FramelessWindowHint) – Taz742