【问题标题】:White line at the end of QComboBox. What's the reason?QComboBox 末尾的白线。什么原因?
【发布时间】: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


【解决方案1】:

发生这种情况是因为您将图标添加到组合框,并使其大小不合适。 尝试编辑QComboBox类中的setIconSize参数

m_rankComboBox->setIconSize(QSize(width, heigt));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多