我做了一個QTabwidget,設定了4個標簽,我現在想讓每個標簽用單獨的背景圖片來填充我現在已經做到了讓同一個背景圖來填充的QTabbar這個類,但是我不知道應該怎么單獨給他們設定圖片呢?我把我實作的方法給大家看下,不知道有沒有高手能解決我的問題,謝謝QTabWidget *tabview = new QTabWidget(win);tabview->setStyleSheet("QTabWidget::pane{border-width:0px;}\ QTabWidget::tab-bar{border-width:0px;}\ QTabBar::tab {background-image: url(:/OK/skins/tab button.png);\ border-bottom-color: #C2C7CB;\ border-top-left-radius: 0px;\ border-top-right-radius: 0px;\ min-width: 140px;min-height: 116px;\ padding: 0px;\ }\ \ QTabBar::tab:!selected {\ margin-top: 0px;\ }\ QTabBar::tab:selected {\ background-image: url(:/OK/skins/musicselect.png);\ }\ QTabBar::tab:first:selected {\ margin-left: 0;\ }\ QTabBar::tab:last:selected {\ margin-right: 0;\ }\ QTabBar::tab:only-one {\ margin: 0;\ }");
uj5u.com熱心網友回復:
哎,論壇無高人?uj5u.com熱心網友回復:
最近我也想了解這個,單獨設定標簽風格uj5u.com熱心網友回復:
獲得單獨的指標,一個 一個用stylesheet設定uj5u.com熱心網友回復:
能否貼段獲取指標的代碼出來看看呢?我相信這樣會幫了很多人不過有一種情況是,就算獲取了指標,那個標簽類不是QWidget的子類,不一定有setStyleSheet()這個成員函式uj5u.com熱心網友回復:
肯定是QWidget的類的,不是QWidget的子類是無法顯示的。QTabBar應該是整個欄,而不是一個標簽,看了QTabWidget的原始碼發現實際上它只有一個QTabBar指標。一直以為一個標簽就是一個QTabBar,實際上應該是n個標簽也是一個QTabBar。QTabBar是QTabWidget中所有標簽的組合。函式QTabBar* QTabWidget::tabBar()可以獲得QTabBar的指標,但是這個函式是保護的,所以必須要繼承一次QTabWidget才可以獲得這個指標。獲得QTabWidget的指標后用at(int index)應該可以獲得單個的指標uj5u.com熱心網友回復:
我試過n種方法了我想你把“標簽”和“標簽欄”兩個概念弄亂了我是說單個標簽不是QWidget的子類,并不是說QTabBar不是QWidget的子類其實仔細研究一下QTabBar就會發現很多奇怪的事情,例如:創建一個tabBar,然后addTab一次,然后用以下代碼 tabBar->setTabsClosable(true); QObject *button=tabBar->children().at(0); textEdit->append(button->metaObject()->className());就會發現每個標簽上的關閉按鈕是CloseButton類,但是我發現qt里根本沒有什么CloseButton類,后來我發現它是自定義的,繼承自QAbstractButton類例如:創建一個tabBar,然后addTab一次,然后用以下代碼tabBar->setTabsClosable(true);textEdit.append(QString::number(tabBar->children().count()));你就會發現此時,tabBar一共有三個子控制元件其中一個是標簽上的CloseButton,另外兩個是ToolButton,就是使得標簽左右移動的那兩個按鈕根本沒有發現有關單個標簽的資訊,就更別說獲得單個標簽的指標了我現在連單個標簽是什么類都不知道,繼承自什么類也不知道uj5u.com熱心網友回復:
再例如:剛才不是說了每個標簽上的關閉按鈕是CloseButton嗎,然后我希望用查找每個標簽上的CloaeButton按鈕的Parent資訊來找有關標簽的資訊但是卻發現CloseButton的parent是QTabBar,而不是單個標簽我原來的構想是:closeButton的parent是標簽,標簽的parent是標簽欄但偏偏closeButton的parent就是標簽欄,中間根本沒有什么有關標簽的東西uj5u.com熱心網友回復:
其實要獲得QTabWidget里的QTabBar指標,不用繼承那么麻煩只要QTabBar *tabBar=tabWidget->findChildren<QTabBar*>().at(0);就可以了uj5u.com熱心網友回復:
好像是沒有這個標簽部件,直接在一個區域內畫圖實際上的tab也只是QTabBar私有資料中的一個結構體uj5u.com熱心網友回復:
也就是說基本上是不可能對QTabBar的tab單獨設定樣式了?uj5u.com熱心網友回復:
我覺得Qt應該沒那么傻,QTabBar本身就是QWidget。看到其中有個方法setTabButton,應該可以設定每一個tab的widget子項,自己沒用過,可以嘗試下獨立設定樣式。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232160.html
標籤:其他技術討論專區
上一篇:控制門鈴
