2017-10-30 16 views
0

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を含むメニューが表示されます。 このメニューを削除するにはどうすればよいですか?

+0

試してください。(親、Qtの:: [ウィンドウ| Qtの:: WindowStaysOnTopHint | Qtの:: X11BypassWindowManagerHint | Qtの:: FramelessWindowHint) – Taz742

答えて

関連する問題