天天看點

QT中設定按鈕背景顔色

     記得剛開始搞QT的時候,經常為一些小問題頭疼,有時甚至懷疑自己是不是不适合搞這個。這些個問題中,就包括按鈕背景顔色的設定。

    設定QPushButton的背景顔色,最基本的方法大概就是使用QPalette了:

QPushButton *pushButton = new QPushButton(this);
QPalette palette = pushButton->palette();
palette.setColor(QPalette::window,Qt::red);
pushButton->setPalette(palette);
           

     可惜的是,運作之後,BUTTON總不能正确的顯示紅色背景。後來,查證頗多,由網友說需要加一句 pushButton->setAutoFillBackGround(true);我試了之後,仍然不行,後來在QT的樣式表相關的說明文檔中才找到一些蛛絲馬迹:

QT中設定按鈕背景顔色

     原來,QPushButton會自動畫一個自然邊框,而這個邊框又正好覆寫了BUTTON的繪制RECT,是以不是沒有把背景設定成RED,而是設定成功了,沒有顯示出來,既然這是樣式表的方法,那不用樣式表能不能把自然邊框隐藏呢,後來查了一下,QPushButton又一個方法:setFlat(true),加上這個代碼後,九OK了,紅色背景就成功畫出來了。綜合來講,代碼如下:

QT中設定按鈕背景顔色

        QPushButton *pushButton = new QPushButton(this);

QPalette palette = pushButton->palette();
palette.setColor(QPalette::window,Qt::red);
pushButton->setPalette(palette);
           

繼續閱讀