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

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

ui->qcombobox->width() 

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

Вопросы:

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

ИЛИ ЖЕ

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

1 ответ

Решение

Ты звонишь ui->qcombobox->width() в конструкторе. Combobox's size is not calculated on this step yet. You need to wait until the first showEvent встречается,. Попробуйте что-то вроде этого:

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

In order to fill combobox on creating widget you need to do something like this:

void MainWindow::showEvent(QShowEvent *e)
{
    QMainWindow::showEvent(e);
    if (!mWasFilled) {
        mWasFilled = true;
        fillCombobox();
    }
}
Другие вопросы по тегам