2016-09-02 6 views
0

Я хотел центрировать выравнивание текстовых элементов в QComboBox, но для этого мне нужно установить Editable в true. Когда я это делаю, внешний вид значительно меняется. Это на Windows 7.QComboBox Посмотрите изменения, когда я использую setEditable (true)

QComboBox when setEditable(false)

QComboBox when setEditable(true)

Я думаю, что изменение происходит потому, что QLineEdit имеет другой вид по умолчанию, чем QComboBox. Что я могу сделать, чтобы заставить их обоих выглядеть одинаково? Спасибо,

ответ

0

При включении редактируемого состояния QComboBox изменения виджета по умолчанию в QEditText, так что вы должны изменить стиль QEditText с помощью Qt Style Sheet:

QLineEdit* lineEdit = new QLineEdit(parent); 
lineEdit->setStyleSheet("here customize"); 
lineEdit->setAlignment(Qt::AlignCenter) 
ui->combo->setLineEdit(lineEdit); 

Если вы не хотите, не редактируемой строку редактирования, попробуйте это :

lineEdit->setReadOnly(true); 
ui->combo->setLineEdit(lineEdit); 
ui->combo->setEditable(true); 

альтернатива, вы можете настроить свой собственный QComboBox и изменить paintEvent(...).

+0

спасибо. Я как-то понял, что, но я не понимаю, как определить настройки стиля по умолчанию для не редактируемого QComboBox, поэтому я могу применить их к редактируемому QComboBox. Я установил истинное значение только для чтения, но все равно дал мне другой вид. –