【发布时间】:2021-10-19 09:03:49
【问题描述】:
QT 5.11 GCC
问题代码:
QStringList::const_iterator it_first = Ranks.cbegin();
QStringList::const_iterator it_second = RanksICO.cbegin();
while (it_first!=Ranks.cend() || it_second!=RanksICO.cend())
{
m_rankComboBox->addItem(QIcon(*it_second), *it_first);
++it_first;
++it_second;
}
m_rankComboBox- 是我的 qComboBox。 RanksICO 和 Ranks 是 QStringList
static const QStringList Ranks={ "Рядовой",
"Ефрейтор",
"Младший сержант",
"Сержант",
"Старший сержант",
"Старшина",
"Прапорщик",
"Старший прапорщик",
"Младший лейтенант",
"Лейтенант",
"Старший лейтенант",
"Капитан",
"Майор",
"Подполковник",
"Полковник",
"Генерал-майор",
"Генерал-лейтенант",
"Генерал-полковник", };
static const QStringList RanksICO={ ":/images/Звания/Рядовой",
":/images/Звания/Ефрейтор",
":/images/Звания/Младший-сержант",
":/images/Звания/Сержант",
":/images/Звания/Старший-сержант",
":/images/Звания/Старшина",
":/images/Звания/Прапорщик",
":/images/Звания/Старший-прапорщик",
":/images/Звания/Младший-лейтенант",
":/images/Звания/Лейтенант",
":/images/Звания/Старший-лейтенант",
":/images/Звания/Капитан",
":/images/Звания/Майор",
":/images/Звания/Подполковник",
":/images/Звания/Полковник",
":/images/Звания/Генерал-майор",
":/images/Звания/Генерал-лейтенант",
":/images/Звания/Генерал-полковник", };
我查看了这个结果:
以前以为是空的,原来是假的
再次提问:为什么我在 QComboBox 的末尾看到白线?
最大索引为 17,qDebug()<< m_rankComboBox->count(); 返回我 17
有什么想法吗?
【问题讨论】:
-
可以选择最后一行吗?您是否使用样式表(可能某种样式以某种方式使弹出窗口大于其内容应有的大小)
-
替换 ++it_first; with it_first++;
-
QComboBox 也有一个addItems 直接接受QStringList 的方法,以后可以循环添加图标吗?另外,
while (it_first!=Ranks.cend() || it_second!=RanksICO.cend())可能应该读作while (it_first!=Ranks.cend() && it_second!=RanksICO.cend())- 如果它们的长度不同,那么如果两者中的任何一个在其末尾,您就想完成,否则您将超过它的末尾
标签: c++ qt qt5 qwidget qcombobox