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

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

ui->qcombobox->width()

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

Вопросы:

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

ИЛИ ЖЕ

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

0

Решение

Ты звонишь 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();
}
}
1

Другие решения


По вопросам рекламы [email protected]