Размер шрифта элементов QComboBox?

Скажем, я заполняю QComboBox числом в каждой строке. И линии очень близки по вертикали. Как я могу контролировать вертикальное расстояние?


person Narek    schedule 05.09.2010    source источник
comment
Возможно, вам следует создать новый вопрос о проверке ввода.   -  person    schedule 05.09.2010
comment
Хорошо, с проверкой ввода я уже сделал.   -  person Narek    schedule 05.09.2010


Ответы (1)


Если вы просто хотите изменить высоту строки (вместо изменения размера шрифта), создайте новый класс делегата:

class RowHeightDelegate : public QItemDelegate
{
    Q_OBJECT
public:
    QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const
    {
        return QSize(1, 40); // the row height is now 40
    }
};

И установите его в поле со списком:

ui->comboBox->setItemDelegate(new RowHeightDelegate());

Изменить:

В приведенном выше примере показано, как изменить высоту строки выпадающего списка. Размер шрифта не изменен. Если вы хотите изменить размер шрифта всего поля со списком (включая раскрывающийся список), создайте новый шрифт нужного размера и установите его в поле со списком:

QFont font;
font.setPointSize(font.pointSize() + 10);
ui->comboBox->setFont(font);

Или используйте Qt Designer или Qt Creator, чтобы изменить размер шрифта.

person Community    schedule 05.09.2010
comment
Обязательно ли наследовать от QItemDelegate для выполнения этой простой операции? - person Narek; 06.09.2010
comment
Что ж, это не так уж сложно. Мой ответ содержит весь код, который вам нужен, так что в основном это две операции копирования/вставки :) Более простой способ - изменить размер шрифта в поле со списком. Это не требует написания нового кода, вы можете сделать это с помощью Qt Designer или Qt Creator. - person ; 06.09.2010