Qt designer что это за программа
Это раньше нужно было писать на чистом C со вставками на Ассемблере, чтобы программы выполнялись быстро и точно, потребляли как можно меньше оперативной памяти и занимали немного места на диске. Сейчас мощности процессоров, объёмы памяти и другие параметры компьютеров таковы, что можно ради «Hello, world!» запускать виртуальную машину на виртуальной машине внутри виртуальной машины, поднимать там Chrome и писать на JavaScript. Хотя, мне больше Python нравится. Вот на нём мы сейчас и напишем небольшую программу с графическим интерфейсом, которую затем скомпилируем в исполняемый файл (а вы же помните, что Python, так-то, язык интерпретируемый?)
Для остроты ощущений всё будем делать на Windows 10 и компилировать, соответственно, exe-шничек. Но замечу, что всё то же самое можно сделать практически так же в любой другой ОС, поддерживающей Qt и Python. Итак, алгоритм действий.
1. Установите Python 3. На Windows достаточно скачать установочный дистрибутив с официального сайта и запустить его. На момент написания статьи последняя версия Python 3.9.0. Самое важное — не забудьте во время установки выбрать галочку «Add Python to environment variables» или «Add Python 3.9 to PATH» (что, в общем-то, одно и то же и зависит от того, какие настройки при установке вы выбрали — расширенные или по-умолчанию).
QT Designer 1강 QT Designer 소개, QTextEdit, QPushButton, QLabel
2. Теперь запустите командную строку (не обязательно с правами администратора) и введите там следующие команды:
pip3 install pyqt5
pip3 install pyqt5-tools
Так мы установили все необходимые пакеты для связки Qt и Python. Кстати, подразумевается, что Qt у нас уже установлен. Если нет — то установите. Вообще, потребуется только Qt Designer, его можно поставить через онлайн-установщик Qt.
3. Вот теперь откройте Qt Designer (именно Designer! Не Creator!) и создайте в нём нужную форму. Я просто кинул на форму кнопку pushButton и текстовое поле lineEdit. Сохраняем эту форму (Файл — Сохранить как. ) с расширением *.ui в папку с проектом. Ну, пусть будет form.ui.
4. Вернитесь в командную строку и выполните следующую команду:
pyuic5 c:/path/to/form.ui -o c:/path/to/form.py
Так мы преобразовали файл формы в формат, с которым Python будет удобно работать.
5. Настало время написать какой-нибудь код. Создайте в той же папке с проектом, на одном уровне с файлами form.ui и form.py, новый файл, допустим, program.py. Пишем код:
import sys
from PyQt5 import QtWidgets
import form # это наш form.py, созданный из form.ui
class MyApp(QtWidgets.QMainWindow, main.Ui_MainWindow): # а это — основной класс, вся логика программы должна располагаться в нём; что-то вроде MainWindow.cpp
def __init__(self): # ничего особенного, для тех, кто писал в Qt на C++: инициализация, setupUI, вот это всё
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.doit) # соединяем сигнал clicked кнопки pushButton со слотом doit, который должен быть описан в этом же классе
def doit(self): # а вот и слот, который выполняет какую-то работу
self.lineEdit.setText(«text») # например, записывает текст в текстовое поле lineEdit
def main(): # кто помнит main.cpp — это оно
app = QtWidgets.QApplication(sys.argv)
window = MyApp() # наш рабочий класс
window.show()
app.exec_()
if __name__ == ‘__main__’: # ну и запускаем всё это
main()
Вот такая простенькая программа. При нажатии на кнопку будет выводить текст в текстовое поле.
6. Откройте командную строку снова. Нам надо установить инструменты для компиляции:
pip3 install pywin32
pip3 install pyinstaller
Мы же в Windows, поэтому нам надо ещё поставить пакет для взаимодействия питона с Win32 API — отсюда и pywin32. В UNIX этот пакет не понадобится, я думаю 😉
7. Теперь переходим в командной строке в папку с проектом
cd c:/path/to/
8. И. компилируем!
pyinstaller —onefile —icon=icon.ico —noconsole program.py
Вот и всё! Рядом с вашими файлами появится папочка dist, а в ней — заветный exe-шничек. Опции:
—onefile — создаёт один исполняемый файл, в который помещается всё необходимое — библиотеки и прочее. Очень удобно для переносимости exe-шничка между машинами.
—icon=icon.ico — иконка программы. Файл *.ico должен лежать там же, где и все остальные файлы проекта, на одном с ними уровне.
—noconsole — без этой опции при открытии полученного exe-шника у вас будет сначала запускаться консоль, а уже из неё — форма. Некрасиво, поэтому добавим эту опцию. Теперь при клике на иконку программы будет сразу открываться форма.
Вот так всё просто, оказывается. Ну да, размер файла программы у меня получился 35 Мб, а оперативной памяти при запуске она съедает 12 Мб. Но это всё же лучше, чем Electron, который с собой в exe-шнике таскает Chrome и запускает его со всем виртуальным окружением каждый раз при открытии исполняемого файла.
Источник: rxlab.org
Qt designer что это за программа
Библиотека сайта rus-linux.net
Нажмите Next (Далее), обратите внимание на опцию CVS и на шаблоны заголовков (они вставляются в начало каждого файла с исходным кодом). В последнем окне нажмите Finish (Готово). KDevelop создаст все файлы, необходимые для компиляции проекта. Вы можете использовать закладку File Selector (слева) для выбора файлов. Откройте 3 файла: main.cpp , sigcreate.cpp и sigcreate.h (рис.
2).
Когда мастер создания приложений закончит работу, вы можете убедиться, что все в порядке, скомпилировав приложение. Для этого выберите Build (Сборка) -> Run automake Run configure . В окне Messages (Сообщения) должно появиться следующее:
» Good — your configure finished. Start make now * * *** Success ***
Теперь вы можете выполнить команду Build (Сборка) -> Build Project (или просто нажмите F8). Затем выполните команды Build (Сборка) -> Install (Установить) и Build (Сборка) -> Execute program (Запустить программу) (или F9). Результат показан на рис. 3.
Рис. 3: Простое приложение для KDE
Теперь, когда мы создали основу, можно начать разработку приложения.
Если KDevelop не распознает автоматически переменные окружения QTDIR и KDEDIR, определите их значения вручную в диалоге Project (Проект) => Project Options. => Configure Options.
Рис. 6: Параметры проекта
Работа с Qt Designer
Qt Designer — это программа для разработки пользовательского интерфейса программы. Она помогает вам расположить на форме элементы управления и создать макет формы, чтобы при изменении ее размеров виджеты располагались должным образом. Рекомендую вам прочитать Руководство по Qt Designer , чтобы узнать все о Qt Designer.
Qt Designer включает в себя редактор кода, но для этой цели мы все-таки будем использовать KDevelop.
Итак, сейчас мы создадим интерфейс приложения, используя Qt Designer. В Qt Designer формы сохраняются с расширением .ui, потому что затем эти файлы будут обработаны программой uic для создания файлов .cpp и .h. KDevelop сделает это за вас, поэтому все, что нам нужно — просто создать форму.
Замечание
Всякий раз, когда вы добавляете или удаляете файлы из проекта (мы добавим файл пользовательского интерфейса с расширением .ui), требуется изменить файл Makefile.am. KDevelop сделает это, но вам нужно будет выполнить команду Build (Сборка) => Run automake New (Файл => Создать) и введите необходимую информацию в появившемся окне диалога. Сначала введите в качестве имени файла sigcreatedlg и выберите тип файла в выпадающем списке. Сейчас нам потребуется создать файл типа Widget (.ui). Обязательно проверьте, отмечен ли флажок «Add to project» (Добавить в проект), иначе файл Makefile.am не будет обновлен.
Нажмите кнопку OK. Появится диалог Automake manager.
Нажмите кнопку ОК.
Если только что созданный sigcreatedlg.ui не был автоматически открыт в Qt Designer, откройте Automake Manager (закладка в правой части главного окна), щелкните на файле правой кнопкой мыши и выберите Open With (Открыть с помощью), и в появившемся меню выберите пункт Qt Designer.
Замечание об именах файлов
К имени файла .ui принято добавлять «dlg», чтобы облегчить чтение кода другим людям. sigcreatedlg обозначает, что этот файл — это класс интерфейса. Обычно имена классов KDE начинаются с заглавной буквы K, и затем следует имя, наиболее полно описывающее вашу программу. Если бы это было настоящее приложение для KDE, мне нужно было бы назвать этот класс KSigCreate .
Окно программы Qt Designer поделено на три части. С левой стороны находится список элементов управления. Справа могут находиться несколько диалогов; я же оставляю только диалог свойств Property Editor (закрыв два остальных). Здесь вы можете настроить внешний вид и поведение виджетов. Можно выбрать размер, цвет виджета и т.д. Посередине находится форма — окно вашего приложения.
Здесь вы и разрабатываете интерфейс программы.
Замечание
После добавления в проект файла sigcreatedlg.ui вам нужно выполнить команду Build (Сборка) => Run Automake http://rus-linux.net/MyLDP/BOOKS/Qt/creating.html» target=»_blank»]rus-linux.net[/mask_link]
Урок #3 – Разработка внутри Qt Designer
За разработку графического дизайна отвечает программа Qt Designer. Она позволяет быстро реализовать графическую составляющую. За урок мы научимся работать с программой и создадим на ее основе программу «Калькулятор».
Видеоурок
Программа Qt Designer
Qt Designer обеспечивает разработчика полноценным графическим редактором. Через него вы можете добавлять виджеты, свойства, а также создавать сигналы (обработчики событий).
Помимо добавления объектов вы можете создавать меню для ваших проектов. Можно управлять статус баром (status bar), меню (menu bar) и toolbar.
Преобразование в «.py»
Qt Designer создает файл с расширением «.ui». Для редактирования такого файла через PyQt 5 его сперва необходимо преобразовать в файл «.py». Этапы преобразования:
- Установите через терминал pyqt и pyqt-tools:
pip install pyqt5 pip install pyqt5-tools
- Перейдите в папку, где сохранен файл с расширением «.ui»
- Выполните команду:
pyuic5 -x file_name.ui -o new_file.py
- Далее у вас будет Python файл, что можно редактировать через любой текстовый редактор
Источник: itproger.com
Стоит ли использовать Qt Designer? Плюсы и минусы
Вроде удобно использовать Qt Designer, но вот думаю, а стоит ли к нему привыкать. Когда писал перевое приложение, было много трудностей с созданием структуры программы. Эта пространство имен (ui) не давало мне выйти из widget.cpp, создашь например виджет в дизайнере, а как к нему класс прикрутить, чтобы туда уже сигналы и слоты сувать — непонятно. Да и во всех книгах этот Qt Designer не используется.
Но с другой стороны, в Qt Disegner можно сразу легко построить сложный по структуре интерфейс, быстро поменять нужные свойства у виджетов не заглядывая в документацию. Вообщем есть свои плюсы и минусы.
Хочу услышать от вас, где вы пишите интерфейс, когда стоит прибегнуть к Qt Designer, а когда этого делать не рекомендуете, расскажите — в чем плюсы, а в чем минусы.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Плюсы и минусы
Господа, хочется узнать ваше мнение по такому варианту работы с сервером терминалов. Хочу.
Плюсы и минусы C#
Добрый день! Не хочу ни в коем случае развязывать вечную войну идущей между Delphi и С, но.
Плюсы и минусы
В массиве Z(m) найти число чередований знака, то есть число переходов с плюсов на минус или с.
Игродел на C++ плюсы и минусы
Всем добрый день У меня к вам вопрос такой вот я сейчас учу C++ и хотел бы пойти работать за.
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
Пользуюсь студией как средой разработки, и дизайнером — для рисования ui-ек, никогда никаких проблем не возникало (по началу только, когда не опытный был) => моё ИМХО — достойная программа и поучиться стоит.
Почетный модератор
11287 / 4255 / 435
Регистрация: 12.06.2008
Сообщений: 12,271
Я всегда использую дизайнер. Сразу видно, как окно будет выглядеть. Немного нехорошо бывает только когда надо динамически создавать какие-то элементы. например, сейчас пишу программу, где в зависимости от содержимого базы данных надо создавать QCheckBox’ы. При этом к части элементов обращаюсь через ui, а к этим приходится через класс окна, где я храню указатели на эти чекбоксы.
И в крайнем случае указатели на все элементы всегда можно скопировать в свой класс окна и дальше работать так, как будто дизайнер не используется. но при этом все элементы уже будут расставлены на форме.
В общем, лично на мой взгляд, дизайнер предоставляет много удобств, а минусы несущественны и их легко обойти. А многие книги вообще пишут по Qt3, либо люди, которые привыкли работать без дизайнера.
Регистрация: 07.10.2011
Сообщений: 203
Qt Disegner можно сразу легко построить сложный по структуре интерфейс
ИМХО та не факт. допустим у нас стоит задача что бы можно было двигать внутренний контент как диафильмы, как рабочие столы в дроиде, да еще и хренова туча слоев поверх друг друга, с виджетами меняющими свой внешний вид/размеры, скрывающимися и появляющимися, причем проделывающими это в заведомо меньшем по размеру родителе, что угодно еще.
Добавлено через 3 минуты
Да, поучиться стоит, солидарен
Регистрация: 04.04.2010
Сообщений: 414
Ну тогда вопрос, вот создал я допустим кнопку в дизайнере. Она получается создана от класса QButton, а как сделать, чтобы она была создана от QMyButton, где я определю уже свои сигнали и слоты для этой кнопки. Просто пока, мне приходится сувать все сигналы и слоты в основной класс QWidget
2731 / 1427 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
на кнопке ПКМ в меню выбираете «Преобразовать в » и указываете свой класс QMyButton и делов то.
Добавлено через 3 минуты
я не понимаю почему многие «брезгуют» дизайнером, считая что описав интерфейс в коде это круто, как по мне то каждому инструменту свое время и место, если интерфейс не сложный и не требует каких-то специфических виджетов то проще набросать в дизайнере чем писать 20-30 строк кода, которого и так будет достаточно.
Регистрация: 04.04.2010
Сообщений: 414
на кнопке ПКМ в меню выбираете «Преобразовать в » и указываете свой класс QMyButton и делов то.
вот откуда это знать простому смертному, спасибо
Добавлено через 29 минут
Еще вопрос:
есть код из книги:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
class QCheckBox; class QRadioButton; // ====================================================================== class Buttons : public QGroupBox { Q_OBJECT private: QCheckBox* m_pchk; QRadioButton* m_pradRed; QRadioButton* m_pradGreen; QRadioButton* m_pradBlue; public: Buttons(QWidget* pwgt = 0); public slots: void slotButtonClicked(); };
Buttons.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Buttons::Buttons(QWidget* pwgt/*= 0*/) : QGroupBox(«QGroupBox», pwgt) { resize(100, 150); setCheckable(true); setChecked(true); m_pradRed = new QRadioButton(«); m_pradGreen = new QRadioButton(«); m_pradBlue = new QRadioButton(«); m_pradGreen->setChecked(true); connect(m_pradRed, SIGNAL(clicked()), SLOT(slotButtonClicked())); connect(m_pradGreen, SIGNAL(clicked()), SLOT(slotButtonClicked())); connect(m_pradBlue, SIGNAL(clicked()), SLOT(slotButtonClicked())); m_pchk = new QCheckBox(«); m_pchk->setChecked(true); connect(m_pchk, SIGNAL(clicked()), SLOT(slotButtonClicked())); QPushButton* pcmd = new QPushButton(«); connect(pcmd, SIGNAL(clicked()), qApp, SLOT(quit())); //Layout setup QVBoxLayout* pvbxLayout = new QVBoxLayout; pvbxLayout->addWidget(m_pradRed); pvbxLayout->addWidget(m_pradGreen); pvbxLayout->addWidget(m_pradBlue); pvbxLayout->addWidget(m_pchk); pvbxLayout->addWidget(pcmd); setLayout(pvbxLayout); slotButtonClicked(); }
Вот в конструкторе мы тут создаем кнопки:
1 2 3
m_pradRed = new QRadioButton(«); m_pradGreen = new QRadioButton(«); m_pradBlue = new QRadioButton(«);
но если мы работает в в дизайнере, значит нам надо присвоить просто уже созданные кнопки, допустим так:
1 2 3
m_pradRed = ui->RB1; m_pradGreen = ui->RB2; m_pradBlue = ui->RB3;
но мы ведь это делаем уже в Buttons.cpp, и ui->RB будет «необъявленным индификатором». Что делать принято в данном случае? Просто объявлять глобальный указатель на эти кнопки и объявлять о их существовании через extern в Buttons.cpp ой как нехорошо.
Источник: www.cyberforum.ru