1.用setStyleSheet方式设置子窗体背景,子窗体的背景还是和父窗体的背景一样,不知道原因。(setAutoFillBackground(false); widget->setStyleSheet("background-color:rgba(128,138,135,66)"); 听说可以,还没试过)
setStyleSheet(tr("background-color:rgba(128,138,135,66);");
如果要设置背景的子窗体是QWidget , 则要设置窗体属性,setAttribute(Qt::WA_StyleBackGround) ; 才能显示正常。
最后使用 修改设置调色板达到了想要的效果:
QPalette_palette=palette();
_palette.setColor(QPalette::Background,QColor(70,80,90,255));
setPalette(_palette);
2.用parentWidget->findChild<T>(objectName);查找子窗体时,能查找的条件:
a. 子窗体是通过new 出来的对象,且未被delete。
b. objectName是通过函数childWidget->setObjectName(ojectName);设置的。如果不设置对象名,则findChild找不到子窗体,返回NULL 。(这是血的教训!)
3. 创建不规则窗体:
多种方法
A.
Qbitmap maskBitmap(width(), height());
maskBitmap.clear();
QPainter p(&maskBitmap);
p.setBrush(Qt::black);
p.drawRoundRect(0, 0, width(), height(), 20, 30);
setMask(maskBitmap);
B. mask.png 为你想要的窗体形状
QPixmap pixmap(tr(":/images/mask.png"));
resize(pixmap.size());
setMask(pixmap.mask());
4. 设置控件边框
用setStyleSheet设置控件边框时,指定边框属性border: 0px; 则不显示控件的边框。如果使用border-width:0px; 则还需指定边框style, border-style: outset; 否则还会显示边框。
5. setStyleSheet设置样式,优先级高于调色板,就是说:如果使用 setStyleSheet修改窗体样式,则调色板失效。
6.控件有“点击获得焦点”的属性,鼠标停留时才会显示提示框。
setFocusPolicy(Qt::ClickFocus); //设置后才能显示提示框
7.用setStyleSheet设置控件只有下边框时(border-bottom: 1px solid gray;),需要设置上边框的宽度为0(border-top: 0px;)。其他边框设置类似,自行实验。
8.控件获得焦点时显示虚线框,现在想去掉虚线框(前提是能获得焦点),但没发现相关的函数,也没看到setStyleSheet的相关设置。
9.QButtonGroup中的按钮无法用TAB键切换。
Note: 设置了checkable属性后无法用TAB键切换。不设置时可以正常切换。
9.模态对话不指定大小时,通过获取对话框大小,使其居中,达不到效果。
dialog->move((SCREEN_WIDTH - dialog->width())/2, (SCREEN_HEIGHT - dialog->height())/2);
还有有方法达到效果的:
首先指定对话框的大小,然后获取对话框大小,使其居中。
dialog->setFixedSize(250, 120);
dialog->move((SCREEN_WIDTH - dialog->width())/2, (SCREEN_HEIGHT - dialog->height())/2);