Qt 问题记录

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);

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值