LINUX.ORG.RU

[QtDesigner] Кто-нибудь использует?


0

1

Кто-нибудь использует QtDesigner в реальных проектах? Я немного потыкал, но он столько кода генерит, да и как-то не по себе, когда программа за меня код пишет (возможно не очень хороший для человеческого понимания)

Нет, я формочки клепал в клепалке креатора.

А более сложные формочки писал ручками.

Zhbert ★★★★★
()
Ответ на: комментарий от visual

Ну, в принципе, да. Но на вопрос я ответил, отдельный-то десигнер я не юзаю.

Zhbert ★★★★★
()

Всегда пишу ручками. Неприязнь к мышевозному созданию формочек со времен борланда.

unfo ★★★★★
()

Для макетирования хорош и для энтерпрайзных форм.

столько кода генерит

Может, ты ещё и каждый moc*.cpp просматриваешь после qmake?

schizoid ★★★
()

Очень удобно. Во-первых, экономит кучу времени. Можно за 20 минут создать довольно сложный интерфейс, на ручное написание которого ушло-бы несколько часов. Во-вторых, любую правку можно внести за 3 клика и не нужно втыкать по 5 минут в собственный код, что-бы подвинуть надпись на 10 пикселей. Если смущает генерируемый код, то, ЕМНИП, можно загружать .ui из ресурсов.

Dragon59 ★★
()

но он столько кода генерит

почти столько же, как если писать руками. В Qt3 всё было хуже.

alex_custov ★★★★★
()

возможно не очень хороший для человеческого понимания

Ну так он генерируется не для того, чтобы ты им любовался.

Amp ★★★
()
Ответ на: комментарий от Amp

Оно спрятано достаточно далеко от глаза программиста? Т.е мне не придется потом в нем копаться? Я не очень сильно разбирался в этом

sol_linux ★★
() автор топика
Ответ на: комментарий от namezys

Не смущает, если не надо потом в этом разбираться

sol_linux ★★
() автор топика

Почитал тут Шлее. При использовании множественного наследования кроме имен виджетов ничего знать особо и не надо

sol_linux ★★
() автор топика

Я использую. В каком месте тебе он генерит лишний код?

Deleted
()

Использую, правда придерживаюсь правила - в дизайнере только создаю элементы UI но не задаю им свойства (максимум - меняю надписи и их выравнивание), а так же не привязываю сигналы к слотам. Связанно это с тем, что во время чтения кода крайне неудобно вспомниать, что там было задано в дизайнере. А писать _весь_ код UI вручную мне кажется весьма странным удовольствием. При сколько-нибудь сложной форме с вложенными друг в друга лейаутами и прочими элементами код инициализации UI может занимать несколько сотен строк. Если это счастье потом еще и потребуется изменять, придется перелопачивать много кода только чтобы вспоминить имена всех нужных для изменения элементов, а потом еще возможно переписывать десятки строк из-за не особо больших (в визуальном плане) изменений.

m0rph ★★★★★
()

Всем спасибо за дельные советы

sol_linux ★★
() автор топика
Ответ на: комментарий от m0rph

Если это счастье потом еще и потребуется изменять, придется перелопачивать много кода

Если находится не в одной огромной функции, а нормально структурировано - то ничего страшного в этом нет.

По поводу изменения свойств в дизайнере - никак нельзя изменить видимость у QDockWidget из дизайнера, поэтому, при появлении, даже если сразу же его скрывать в коде, он все равно будет появляться на доли секунды.

И зачем нужен тогда дизайнер, если в нем не настраиваются даже такие элементарные вещи?

unfo ★★★★★
()
Ответ на: комментарий от sol_linux

Даже если ты в него залезешь всем будет пофиг. Потому что при следующей сборке все ui_*.h, moc_*.cpp файлы будут переписаны. Лишнего кода там не много. Просто он устанавливает то, чем ты сейчас не активно пользуешься. Тем более там работа с ресурсами и QAction куда приятней, попробуй разок, быстро привыкнешь.

frozenix ★★★
()
Ответ на: комментарий от m0rph

Кстати да, очень советую не использовать слоты в стиле on_pushbutton_clicked. Хоть и с первого взгляда выглядит очень привликательно гемороя выползет от него куча. Один из них, что нельзя привязать так 2 сигнала(можно сделать connect(), но это выходит еще то месиво, лучше использовать один стиль). И при изменении имени объекта нужно будет изменить имя ф-ции(сомнительного рода удовольствие). При использовании connect тоже нужно будет изменить имя, но они хоть все в одном месте

frozenix ★★★
()
Ответ на: комментарий от unfo

что-то ты сделал не так, создал GUI проект по шаблону с QDockWidget с таким кодом в mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->dockWidget->hide();
}

MainWindow::~MainWindow()
{
    delete ui;
}

и код в main.cpp по-умолчанию

#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

Сначала вызывается конструктор MainWindow в нем скрывается виджет. (Форма в этот момент еще не показана на экране) И после его завершения показывает форму в main.cpp. Никаких морганий быть не должно.(у меня точно не было)

frozenix ★★★
()
Ответ на: комментарий от unfo

По поводу изменения свойств в дизайнере - никак нельзя изменить видимость у QDockWidget из дизайнера, поэтому, при появлении, даже если сразу же его скрывать в коде, он все равно будет появляться на доли секунды.


man show()

Dragon59 ★★
()
Ответ на: комментарий от frozenix

Внутри

ui->setupUi(this);
Вызывался show() для доквиджетов

unfo ★★★★★
()
Ответ на: комментарий от frozenix

Это было пару лет назад, возможно, что они это пофиксили

unfo ★★★★★
()

Если у тебя не суперсложный интерфейс, работающий по марсианской логике — используй дизайнер. Пожалей тех, кому придётся потом это править когда внезапно окажется, что интерфейс надо переделать.

Deleted
()
Ответ на: комментарий от unfo

По поводу изменения свойств в дизайнере - никак нельзя изменить видимость у QDockWidget из дизайнера, поэтому, при появлении, даже если сразу же его скрывать в коде, он все равно будет появляться на доли секунды.

Видимость вроде нельзя менять в дизайнере вообще, а не только у QDockWidget. Но если setupUi проводить до вызова show(), ничего мерцать не будет.

И зачем нужен тогда дизайнер, если в нем не настраиваются даже такие элементарные вещи?

В нем много чего не настраивается, поэтому в сравнении с тем же быдлеровским прадедушкой сильно сливает. Для меня QtDesigner - средство быстрого расположения элементов UI на форме и ничего более. Я вообще сторонник делать все в коде, но личная практика показала, что использовать дизайнер мне все же быстрее и удобнее.

m0rph ★★★★★
()

Использую, в реальном проекте, продукт очень даже неплохо продаётся. Формочек много, неудобств особых не испытываем.

world
()
Ответ на: комментарий от world

Вот так, кстати говоря, использую. Делать в дизайнере соединения сигнал-слот плохо, ибо потом замучаешься разгребать что там к чему, да и в 90% случаев требуется несколько больший функционал, чем просто уснатовка свойства другого элемента интерфейса. А вот лейауты-выравнивания-надписи проще на формочке править.

world
()
Ответ на: комментарий от world

сигнал-слот плохо

Не всегда и не везде. :)
Простой пример: завязку rejected - reject в диалоге в 90% случаев проще сделать сразу в дизайнере, чем городить по дефолту в коде.

zJes ★★
()
Ответ на: комментарий от visual

visual

одно и тоже - они оба используют moc

Это вообще один и тот же дизайнер, код реюзается между qtcreator и qtdesigner. Был даже плагин к kdevelop с ним же.

Pavval ★★★★★
()

да и как-то не по себе, когда программа за меня код пишет

Виталий Светославович смотрит на тебя с презрением и плохо скрываемой ненавистью.

V_L_A_D ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.