关于comboBox控件

大树学长 2019-12-16 05:16:22
我使用QSS设置combobox的一些样式和颜色,下面是代码


ui->comboBox->setStyleSheet("QComboBox::drop-down:pressed"
"{"
"subcontrol-position:center right;"//按钮位置
"image:url(:/2.png);"//按钮图片
"}"
"QComboBox:drop-down"
"{"
"subcontrol-position:center right;"//
"image:url(:/1.png);"//
"}"
"QComboBox:drop-down:hover"
"{"
"subcontrol-position:center right;"
"image:url(:/2.png);"
"}"
"QComboBox"
"{"
"color: rgb(255, 0, 0);"
"border-width: 2px;"
"border-style: solid;"
"border-color: rgb(0,0,0);"
"}"
"QComboBox::background"
"{"

"border:1px solid #000000;"
"padding:1px 18px 1px 3px;"
"min-width:100px;"
"font:12px;"
"}"
"QComboBox:!editable,QComboBox::drop-down:editable "
"{"
"background:qlineargradient(x1:0, y1:0, x2:1, y2:0,"
"stop:0 rgb(0,0,0), stop:1 rgb(0,0,0));"
"}"
"QComboBox QAbstractItemView "
"{"
"border: 1px solid rgb(0, 0, 0);"
"background: rgb(0, 0, 0);"
"outline: none;"
"}"
"QComboBox QAbstractItemView::item "
"{"
"height: 25px;"
"color: rgb(0, 255, 0);"
"}"
"QComboBox QAbstractItemView::item:selected "
"{"
"background: rgb(73, 73, 73);"
"color: rgb(0, 0, 255);"
"}"

);



但是设置为可编辑后,ui->comboBox->setEditable(true);
有两个问题:
1、编辑框的背景应该怎么设置?使用QSS
2、还发现编辑框中修改当前显示数据后回车会自动添加为新行,回车后不是应该将当前行修改并显示么,怎么会是添加为新行?怎么设置编辑框中输入范围






...全文
157 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
官网有说 输入是一个 line edit,但是没说怎么控制他的样式,我也没看到怎么搞,没啥时间翻看,
  • 打赏
  • 举报
回复
你们都不查官网的啊?...
QComboBox *cm = new QComboBox(this);
    cm->addItem("1");
    cm->addItem("2");
    cm->setEditable(true);
    cm->setCurrentIndex(0);
    cm->setGeometry(0, 0, 240, 40);
    cm->setStyleSheet("QComboBox {background:green;}");
    cm->setInsertPolicy(QComboBox::InsertAtCurrent);
背景的话 直接改QComboBox就有效果
霍灬霍 2019-12-17
  • 打赏
  • 举报
回复
引用 2 楼 大树学长 的回复:
[quote=引用 1 楼 霍灬霍 的回复:]
1.编辑背景试试这样写
QComboBox:editable {
background: white;
}
2.修改后应该用QComboBox的void currentTextChanged(const QString &text)信号 或者void editTextChanged(const QString &text)信号来修改当前行,范围用正则表达式,你这样试试行不行

第一个不行,第二个问题就是输入后回车会自动添加一个新行,这个里面应该要屏蔽掉回车键吧?[/quote]
不用屏蔽回车键,你在我说的那个信号对应的槽里添加下面这行,试试
ui->comboBox->setItemText(ui->comboBox->currentIndex(), text);
lishadowl 2019-12-16
  • 打赏
  • 举报
回复
我记得qt里面你的所有操作都会有对应的事件,所以屏蔽回车键的话应该可以做一个事件过滤器(我只是有个思路,没有实际操作过),好像是PressEvent还是KeyPressEvent(大概格式,可能有拼写错误)
大树学长 2019-12-16
  • 打赏
  • 举报
回复
引用 1 楼 霍灬霍 的回复:
1.编辑背景试试这样写 QComboBox:editable { background: white; } 2.修改后应该用QComboBox的void currentTextChanged(const QString &text)信号 或者void editTextChanged(const QString &text)信号来修改当前行,范围用正则表达式,你这样试试行不行
第一个不行,第二个问题就是输入后回车会自动添加一个新行,这个里面应该要屏蔽掉回车键吧?
霍灬霍 2019-12-16
  • 打赏
  • 举报
回复
1.编辑背景试试这样写
QComboBox:editable {
background: white;
}
2.修改后应该用QComboBox的void currentTextChanged(const QString &text)信号 或者void editTextChanged(const QString &text)信号来修改当前行,范围用正则表达式,你这样试试行不行

16,225

社区成员

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

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