Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: BuRn от Декабрь 04, 2011, 22:21



Название: вопрос по формам
Отправлено: BuRn от Декабрь 04, 2011, 22:21
Интересует вот что, создать форму и заполнить ее виджетами можно прям из кода , путем создания элементов и добавление их на слой , после добавлять слой на форму , а можно это все сделать через дезайнер, но вот вопрос в том , что можно ли сделать в дизайнере часть виджета , т.е. к пример я хочу что бы у меня на форме было несколько tabWidget -ов , на которых расположенны разные элементы(на каждом виджете разные элементы ) , вот есть ли возможность сконструировать кусок гуи и потом его влепить в форм , т.е. что бы не делать вручную к примеру так
Код:
BAccept = new QPushButton(QString::fromLocal8Bit("Принять заказ"));
    BPrint = new QPushButton(QString::fromLocal8Bit("Печать чека"));
    Layout = new QGridLayout;
    HLayout = new QHBoxLayout;
    _HLayout = new QHBoxLayout;
    price = new QLineEdit;
    label = new QLabel;
    label->setText(QString::fromLocal8Bit("Принято наличных"));
    spacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
    discount = new QCheckBox;
    _tableWidget = new QTableWidget;
    _tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
    _tableWidget->setColumnCount(5);
    BAccept->setStyleSheet("min-height: 40px;");
    BPrint->setStyleSheet("min-height: 40px;");
    QTableWidgetItem *item1 =new QTableWidgetItem;
    item1->setText(QString::fromLocal8Bit("Наименование"));
    QTableWidgetItem *item2 =new QTableWidgetItem;
    item2->setText(QString::fromLocal8Bit("Цена"));
    QTableWidgetItem *item3 =new QTableWidgetItem;
    item3->setText(QString::fromLocal8Bit("Колличество"));
    QTableWidgetItem *item4 =new QTableWidgetItem;
    item4->setText(QString::fromLocal8Bit("Время"));
    QTableWidgetItem *item5 =new QTableWidgetItem;
    item5->setText(QString::fromLocal8Bit(""));
    _tableWidget->setHorizontalHeaderItem(0,item1);
    _tableWidget->setHorizontalHeaderItem(1,item2);
    _tableWidget->setHorizontalHeaderItem(2,item3);
    _tableWidget->setHorizontalHeaderItem(3,item4);
    _tableWidget->setHorizontalHeaderItem(4,item5);
а нарисовать его отдельно  виджетом без формы и добавлять потом на форму
Простите если что-то не так , попытался объяснить как мог


Название: Re: вопрос по формам
Отправлено: andrew.k от Декабрь 04, 2011, 22:30
ну так а в чем разница?
ты вызываешь setupUi(this)
это создает виджеты, которые ты в дизайнере накатал.
После этого создавай свои собственные как тебе надо.

Либо делай свою часть формы как отдельный виджет и используй его целиком.
Смотря что тебя нужно.


Название: Re: вопрос по формам
Отправлено: BuRn от Декабрь 04, 2011, 22:32
да разницы то нет , просто не хочется их вот так сказать "ручками" рисовать, хотелось бы в дезайнере


Название: Re: вопрос по формам
Отправлено: Fat-Zer от Декабрь 05, 2011, 07:34
1) рисуешь/создаёшь класс для виджета.
2) в дизайнере на основную форму добавляешь обычный виджет (ну или тот от которого наследовал свой)
3) ПКМ->"преобразовать к..." и добавляешь свой виджет, а потом вабираешь его. (пишу по памяти)
4) ????
5) PROFIT!