请教关于QComboBox在使用中遇到的问题

lwei2 2021-04-08 11:24:07
各位大佬,下面是我使用的QComboBox,代码如下:

m_comboPro = new QComboBox(this);
m_comboPro->setStyleSheet("QComboBox{border-image:url(:/res/pwd/comboBoxBkg.png);font-family:'SimHei';font-size:13px;color:#003DA6;border: 1px solid gray;}"
"QComboBox QAbstractItemView{background:rgba(255,255,255,1);border:1px solid rgba(228,228,228,1);border-radius:0px 0px 5px 5px;font-size:13px;outline: 0px;}"
"QComboBox QAbstractItemView::item {min-height: 13px;}"
"QComboBox::drop-down{border-left-width: 1px;border-left-color: lightgray;border-left-style: solid; border-top-right-radius: 3px;border-bottom-right-radius: 3px;subcontrol-origin: padding;subcontrol-position: top right; width:18px;}"
"QComboBox::down-arrow{image:url(:/res/pwd/arrowDown0.png)}"
"QComboBox::down-arrow:hover{image:url(:/res/pwd/arrowDown0.png)}"
"QComboBox::down-arrow:pressed{image:url(:/res/pwd/arrowDown0.png)}");
m_comboPro->addItem("你的生日是什么时候?");
m_comboPro->addItem("你的学号是多少?");
QStyledItemDelegate *delegate = new QStyledItemDelegate(this);
m_comboPro->setItemDelegate(delegate);
QImage comboBoxImg(":/res/pwd/comboBoxBkg.png");
m_comboPro->resize(comboBoxImg.size());
m_comboPro->move(this->width()*8/100 + m_labelFst->width(), this->height()*17/100);
connect(m_comboPro, SIGNAL(currentIndexChanged(int)), this, SLOT(slotClickedComboBox(int)));
有什么办法能让QComboBox的文字靠左,然后又不是最左端吗?还有,就是res/pwd/arrowDown0.png向下的箭头,能不能往右移动一定位置(因为向下箭头太靠右了,没有完全显示)呢?最后,如果不移动窗口QDialog的位置,点击向下箭头,它是不会有错位的现象,但是一旦移动窗口后,点击向下的箭头,就会出现选项错位?有什么办法解决这些问题吗? 请给位大佬指点一下,小弟在此不胜感激!
...全文
678 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwei2 2021-04-09
  • 打赏
  • 举报
回复
引用 5 楼 萝布菜 的回复:
这里只是变量,你改成实际值就好了
好的,多谢!
萝布菜 2021-04-08
  • 打赏
  • 举报
回复
这里只是变量,你改成实际值就好了
lwei2 2021-04-08
  • 打赏
  • 举报
回复
引用 3 楼 萝布菜 的回复:
以下大概是你要的效果,padding的值需要适当调小一点,具体含义就不一一解释了,建议看下 qt帮助里 The Style Sheet Syntax,里面有比较详细的介绍也有很多实例。 H -- ComboBox height QComboBox{ max-height:Hpx; min-height:Hpx; border-radius:H/2px; padding-left:H/2px; } QComboBox::drop-down{ border:none; padding-right:H/2px; width:Hpx; } QComboBox::down-arrow/*这里的尺寸设置可结合下拉箭头图片的实际尺寸设置,但不要超出drop-down的尺寸范围 */ { width:Hpx; height:Hpx; }
多谢大佬指点,再多问一个问题,就是 QImage comboBoxImg(":/res/pwd/comboBoxBkg.png"); comboBoxImg.height()的单位是px吗?因为我想计算出ComboBox height,好像在样式单里面不能传递参数吧。
萝布菜 2021-04-08
  • 打赏
  • 举报
回复
以下大概是你要的效果,padding的值需要适当调小一点,具体含义就不一一解释了,建议看下 qt帮助里 The Style Sheet Syntax,里面有比较详细的介绍也有很多实例。 H -- ComboBox height QComboBox{ max-height:Hpx; min-height:Hpx; border-radius:H/2px; padding-left:H/2px; } QComboBox::drop-down{ border:none; padding-right:H/2px; width:Hpx; } QComboBox::down-arrow/*这里的尺寸设置可结合下拉箭头图片的实际尺寸设置,但不要超出drop-down的尺寸范围 */ { width:Hpx; height:Hpx; }
lwei2 2021-04-08
  • 打赏
  • 举报
回复
引用 1 楼 萝布菜 的回复:
没有图不能准确把握你的需求。 有什么办法能让QComboBox的文字靠左,然后又不是最左端吗? 默认样式本就不是在最左边,会有一定的边距。 微调 padding-left:2px;可以调整到边框的距离,数值按需修改。 向下的箭头,能不能往右移动一定位置(因为向下箭头太靠右了,没有完全显示):是向左吧 - - down-arrow 是绘制在 drop-down上的。 down-arrow image会随down-arrow的尺寸等比缩放. drop-down 设置了宽度为18. 想要down-arrow全部显示出来,需要指定down-arrow的尺寸,不大于18, QComboBox::down-arrow 大佬,你好,截图如下: { widtd:18px; height:18px; image:url(:/res/pwd/arrowDown0.png) } 最后问题,最好有图
引用 1 楼 萝布菜 的回复:
没有图不能准确把握你的需求。 有什么办法能让QComboBox的文字靠左,然后又不是最左端吗? 默认样式本就不是在最左边,会有一定的边距。 微调 padding-left:2px;可以调整到边框的距离,数值按需修改。 向下的箭头,能不能往右移动一定位置(因为向下箭头太靠右了,没有完全显示):是向左吧 - - down-arrow 是绘制在 drop-down上的。 down-arrow image会随down-arrow的尺寸等比缩放. drop-down 设置了宽度为18. 想要down-arrow全部显示出来,需要指定down-arrow的尺寸,不大于18, QComboBox::down-arrow { widtd:18px; height:18px; image:url(:/res/pwd/arrowDown0.png) } 最后问题,最好有图
大佬,截图如下: 如截图中所示,问题1.QComboBox里的文字能不能往右移动一点点,太靠左侧了。 问题2.向下的箭头能不能往左侧移动一点点,因为那个向下的箭头图片本来是矩形的,结果由于我不太清楚怎么设置其属性,因此变成了看起来像三角形一样,太靠右侧了。 问题3.错位已解决。 最后想实现的效果类似以下截图:
萝布菜 2021-04-08
  • 打赏
  • 举报
回复 1
没有图不能准确把握你的需求。 有什么办法能让QComboBox的文字靠左,然后又不是最左端吗? 默认样式本就不是在最左边,会有一定的边距。 微调 padding-left:2px;可以调整到边框的距离,数值按需修改。 向下的箭头,能不能往右移动一定位置(因为向下箭头太靠右了,没有完全显示):是向左吧 - - down-arrow 是绘制在 drop-down上的。 down-arrow image会随down-arrow的尺寸等比缩放. drop-down 设置了宽度为18. 想要down-arrow全部显示出来,需要指定down-arrow的尺寸,不大于18, QComboBox::down-arrow { widtd:18px; height:18px; image:url(:/res/pwd/arrowDown0.png) } 最后问题,最好有图

16,816

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧