Qt的一些樣式技巧

2021-05-23 10:28:51 字數 1912 閱讀 4678

一. 背景刷成黑色,前景色設為白色。 方法一、paltette方式,經測試,該方法不會影響到其他控制項,推薦使用 qpalette bgpal = palette();

bgpal.setcolor (qpalette::background, qcolor (0, 0 , 0, 255));

//bgpal.setcolor (qpalette::background, qt::transparent);

bgpal.setcolor (qpalette::foreground, qcolor (255,255,255,255)); setpalette (bgpal);

方法二、stylesheet方式 影響子控制項的方法是:

setstylesheet ("background-color: rgb(0,0,0);color: rgb(255,255,255);");

不影響子控制項的方法是:

setstylesheet ("venus--titlebar ");

二. 圓角控制項 用stylesheet方式

setstylesheet ("border:2px groove gray;border-radius:10px;padding:2px 4px;");

三. 圓角視窗 roundrectwin::roundrectwin() 注意:mask的圖多餘部分設為白色

四. 半透明視窗

1.視窗整體透明,但是窗體上的控制項不透明。 通過設定窗體的背景色來實現,將背景色設定為全透。 qpalette pal = palette();

pal.setcolor(qpalette::background, qcolor(0x00,0xff,0x00,0x00)); setpalette(pal); 試驗效果:

窗體標題欄不透明;

窗體客戶區上的控制項不透明,qlabel控制項只是字顯示,控制項背景色透明; 窗體客戶區完全透明。

另外從網上看到的方法: setattribute(qt::wa_translucentbackground, true); 試驗的結果是類似於上面的方法,但有時候窗體會被一些雜色斑點填充,未找到原因。

2.視窗及其上面的控制項都半透明:

setwindowopacity(0.7)

試驗效果:視窗及控制項都半透明。注意不能夠setwindowflags(qt::framelesswindowhint);要不就不起作用

3.視窗整體不透明,區域性透明:

在paint事件中使用clear模式繪圖。

void testwindow::paintevent( qpaintevent* )

試驗效果:繪製區域全透明。如果繪製區域有控制項不會影響控制項。

以上實驗均是基於directfb的qte測試。在linux下及windows下效果會略有不同。 比如在windows下第3個實驗,繪製區域就是乙個黑窟窿,如果window本身半透,則是window下面的內容加上半透效果,不是全透明效果。

五. 控制qpixmap的alpha

qpixmap temp(pixmaptop.size()); temp.fill(qt::transparent);

qpainter p(&temp);

p.setcompositionmode(qpainter::compositionmode_source);

p.drawpixmap(0, 0, pixmaptop);

p.setcompositionmode(qpainter::compositionmode_destinationin);

p.fillrect(temp.rect(), qcolor(0, 0, 0, alpha)); //--lable顯示前景 ui->label->setscaledcontents(true);

ui->label->setpixmap(temp);

六. layout 的邊界 layout->setmargin (0);

Qt 一些技巧積累

和查詢的資料不同之處 在副視窗中新增子按鈕 如下 在父視窗中新增子按鈕 qwidget window new qwidget qpushbutton button1 new qpushbutton one qpushbutton button2 new qpushbutton two qvboxla...

CSS樣式修改的一些技巧

1和 2都是struts2的國際化,兩段文字連在一起但是要不同的樣式,前者要用對應的css樣式,字型為粗體。後者為也要利用對應的樣式,但要細體要有個點佔一列,導致table首行撕裂 標題本身是一列獨佔一行,結果對應下一行兩列,結果顯示有問題 關鍵字加在td colspan 2 使他這列乙個相當於兩列...

DIV CSS樣式表的一些技巧

使用css的一點心得 1。當有兩個層巢狀時,如果內層的div是浮動的,外層的div就要設高度,否則用border屬性看看該層會發現它沒有高度。這種情況下你對外層設定背景時會發現沒有作用。另外設外層的padding屬性也可以讓它有高度。還可以在內層設定ul dl列表,這樣外層也會跟著內層調整高度。2。...