2012-09-05 16 views
1

我剛纔已經改變了一些工具欄從Q3ToolBars(有明確添加到他們QToolButtons)到Q4工具欄(添加到他們馬上代替行動。)我如何定製QToolBar中的動作外觀?

舊的工具按鈕有一個不錯的輪廓在他們身邊,但是這是不在新版本中顯示; Q4工具欄中的QActions看起來就像一排圖標。有沒有辦法在新版本中更改「按鈕」樣式(假設這些操作可以被認爲是這樣)並給他們提綱?我已經瀏覽了QToolBar的參考資料,但是toolButtonStyle()函數只能用於顯示圖標,文本等。

......或者我必須製作實際的工具按鈕和/或QPushButtons並使用addWidget()?

回答

0

是的,當然你可以用兩種不同的方式編輯QToolButtons的樣子:

  1. 可以使用void QWidget::setStyleSheet(const QString &)設置樣式表
  2. 您可以重新實現QToolButtons類新paintEvent功能,你就可以準確設置按鈕的外觀。
+0

我瀏覽了樣式表文檔,沒有看到任何具體做輪廓的方法,除非我只是不夠努力。 至於paintEvent ...好吧,如果必須的話,我會研究一下。希望有一個簡單的解決方法,但:/ – nicole

0

通過QToolBar::widgetForAction(自Qt 4.2開始)可以訪問與給定動作關聯的窗口小部件。所以,你可以通過你的行動,以這種方法,獲得通過它返回的QWidget S,將它們轉換爲QToolBar,並處理它們就像你通常會(代碼未測試):

// ... 

auto toolButton = 
    static_cast<QToolButton *>(
     m_ui.toolbar->widgetForAction(m_ui.my_Action)); 

// Will make the toolButton always appear raised: 
toolButton->setAutoRaise(false); 

// ... 

至於我有一些方法可能不起作用(即,QWidget::hide),所以做自己的測試。