2015-03-09 4 views
-1

В моем рабочем столе Qt мне нужно диалоговое окно для ввода пользователем некоторых данных. Поэтому я выбираю: Новый файл | Qt | Designer form class, затем Dialog с нижними кнопками и назовите его соответствующим образом.Макет для настраиваемого диалогового окна

В конструкторе нового диалога я создаю несколько меток и редактирование строк и добавляю их в макет сетки. Как это:

ui->setupUi(this); 

partNoLabel = new QLabel(tr("&Part No:")); 
partDescLabel = new QLabel(tr("&Description:")); 

partNoLineEdit = new QLineEdit(); 
partDescLineEdit = new QLineEdit(); 

partNoLabel->setBuddy(partNoLineEdit); 
partDescLabel->setBuddy(partDescLineEdit); 

supplierLabel = new QLabel(tr("Supplier")); 
supPartNoLabel = new QLabel(tr("Part No")); 
supplierLineEdit = new QLineEdit(); 
supPartNoLineEdit = new QLineEdit(); 

supplierLabel->setBuddy(supplierLineEdit); 
supPartNoLabel->setBuddy(supPartNoLineEdit); 


QGridLayout *dlgLayout = new QGridLayout; 
dlgLayout->addWidget(partNoLabel, 0, 0); 
dlgLayout->addWidget(partNoLineEdit, 0, 1); 
dlgLayout->addWidget(partDescLabel, 1, 0); 
dlgLayout->addWidget(partDescLineEdit, 1, 1); 

dlgLayout->addWidget(supplierLabel, 2, 0); 
dlgLayout->addWidget(supplierLineEdit, 2, 1); 
dlgLayout->addWidget(supPartNoLabel, 3, 0); 
dlgLayout->addWidget(supPartNoLineEdit, 3, 1); 

setLayout(dlgLayout); 

setWindowTitle("New part"); 

Когда отображается, хотя - это выглядит ужасно:

dialog showing buttons over edit boxes

и при изменении размеров, выглядит хуже:

resized dialog showing buttons over edit boxes

Это явно неприемлемо, как я исправить это, или как я должен был это сделать?

Фиксированная версия:

Я последовал совету Габор Angyal и делали это вручную, удаление и добавление коробки кнопку в коде. Я также изменил с помощью FormLayout, как описано в этой статье: http://doc.qt.digia.com/qq/qq25-formlayout.html

Полученная форма выглядит так:

fixed dialog

, который до сих пор нуждается в подправить или два, но, по крайней мере, кнопки находятся в правой место: D.

+0

Вам нужно найти макет, содержащий ваши кнопки (ok/cancel) и составить новую вертикальную рамку, которая будет содержать макет сетки и расположение кнопок. – vahancho

+0

Спасибо. Лучше ли вообще не использовать кнопку «внизу» в диалоговом окне настройки? –

ответ

2

Проблема в том, что вы создали макет вручную, но добавили к нему кнопку. Я предлагаю вам либо создать всю форму с помощью конструктора, либо сделать все вручную, но не смешивать их.

С дизайнером

  • Откройте .ui файл в конструкторе.
  • С помощью правой кнопки мыши установите сетку.
  • Перетащите & Бросьте texboxes.

Руководство

Смежные вопросы