Как обрезать текст в QComboBox или как получить его фактическую ширину?

Я хочу обрезать текст в QComboBox. Но для этого мне нужно знать ширину QComboBox. И когда я звоню примерно так:

ui->qcombobox->width() 

Я получаю неверное значение (фактическая ширина составляет около 260 пикселей, но результирующая ширина всегда составляет 100 пикселей).

Вопросы:

Как я могу получить реальную ширину QComboBox?

ИЛИ

Как я могу обрезать текст в зависимости от ширины QComboBox?


person RedEyed    schedule 21.05.2015    source источник
comment
что вы имеете в виду обрезать текст, если текст слишком длинный, он просто делает ... и вы не видите, что говорит остальная часть, потому что в поле со списком недостаточно места для его отображения?   -  person AngryDuck    schedule 21.05.2015


Ответы (1)


Вы вызываете ui->qcombobox->width() в конструкторе. Размер Combobox на этом этапе еще не рассчитывается. Вам нужно дождаться появления первого showEvent. Попробуйте что-то вроде этого:

void MainWindow::showEvent(QShowEvent *e)
{
    QMainWindow::showEvent(e);
    qDebug() << ui->qcombobox->width();
}

Чтобы заполнить выпадающий список при создании виджета, вам нужно сделать что-то вроде этого:

void MainWindow::showEvent(QShowEvent *e)
{
    QMainWindow::showEvent(e);
    if (!mWasFilled) {
        mWasFilled = true;
        fillCombobox();
    }
}
person Amartel    schedule 21.05.2015