【无标题】

QComboBox下拉列表中内容显示不全时对其设置Tooltip后对应item的隐藏数据又取不出问题

记录一下解决

使用QStandardItemModel给Qcombox设置模型

为了可进行ToolTip设置,使用QStandardItem创建item。

QComboBox* pCmb = new QComboBox;
QStandardItemModel* model = new QStandardItemModel(this);
QString displayname = “显示内容”;
QStandardItem* item = new QStandardItem(displayname);
item->setToolTip(displayname);
model->appendRow(item);
pCmb ->setModel(model);

但是在设置下拉列表值时,有隐藏变量后台使用,界面不做显示。

QString displayname = “显示内容”;
QVariant askiid("隐藏变量");
pCmb ->addItem(displayname, taskiid);

在setModel后,此隐藏变量使用pCmb ->currentData()无法取出。
因为使用了model,变量需要存在item中。

item->setData(displayname, Qt::DisplayRole);
item->setData(taskiid, Qt::UserRole);

然后隐藏数据从model中取

int curi = pCmb ->currentIndex();
QString curtext = pCmb ->model()->data(pCmb ->model()->index(curi,0), Qt::UserRole).toString();

注意setData时的数据角色
引用解释:
//在为数据模型的一个项设置数据时,可以赋予其不同项的角色的数据。例如,数据模型类 QStandardItemModel 的项数据类是 QStandardItem,其设置数据的函数是:
void QStandardItem::setData(const QVariant &value, int role= Qt::UserRole + 1)

其中,value 是需要设置的数据,role 是设置数据的角色。一个项可以有不同角色的数据,用于不同的场合。

role 是 Qt::ItemDataRole 枚举类型,有多种取值,如 Qt::DisplayRole 角色是在视图组件中显示的字符串,Qt::ToolTipRole 是鼠标提示消息,Qt::UserRole 可以自定义数据。项的标准角色是 Qt::DisplayRole。

在获取一个项的数据时也需要指定角色,以获取不同角色的数据:
QVariant QStandardItem::data(int role = Qt::UserRole + 1) const

为一个项的不同角色定义数据,可以告知视图组件和代理组件如何显示数据。例如,在图 6 中,项的 DisplayRole 数据是显示的字符串,DecorationRole 是用于装饰显示的属性,ToolTipRole 定义了鼠标提示信息。不同的视图组件对各种角色数据的解释和显示可能不一样,也可能忽略某些角色的数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值