Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Клуб юнуксоидов > Введение в Qt4


Автор: GrayCardinal 15.2.2007, 04:33
Введение в Qt4
Qt4 - платформа для разработки приложений под (практически) любые операционные системы. Платформа включает в себя :
1. Среду для разработки графического интерфейса.
2. Компилятор мета-объектов.
3. Набор классов для работы. Все, от списков до баз данных.
Платформой Qt4 занимается Trolltech ™. Сайт компании : www.trolltech.com. Лозунг компании, 
как написано на главной странице сайта : "меньше кодируйте, больше создавайте"

-- Среда для разработки графического интерфейса
(designer-qt4 или просто designer, только убедитесь что у вас действительно четвертая версия)
Среда представляет три основные части :
1. Главное меню (с практически нулевой загруженностью).
2. Окно с доступными стандартными (и не очень) "виджетами".
3. Окно с редактором свойств (виджетов).

-- Создание графического интерфейса.
Создание GUI сводится к перетаскиванию нужных элементов на виджет и их позиционированию. Хочу отметить, что по-умолчанию все виджеты не имеют каких-либо жестких размеров или координат нахождения в родительском окне. Вам совсем не надо считать координаты и "подгонять" элементы под размеры окон. Все элементы сами масштабируются, чтобы
вписаться в размеры окна. Когда вы хотите задать порядок расположения виджетов, вы создаете контейнер (layout), одного из двух типов : горизонтальный бокс, вертикальный бокс, и табличный бокс. В этих контейнерах все виджеты будут располагаться горизонтально, вертикально и в фасеточной разметке соответственно. У каждого виджета есть свойство, позволяющее задавать контейнер, в котором будут размещаться дочерние виджеты. Т.е. если
 вы хотите разместить дочерние виджеты, вы создаете контейнер, добавляете в него виджеты, затем "прикручиваете" контейнер к нужному родительскому окну. Конечно, среда сделает это за вас... при помощи трех кнопок.

После размещения элементов в родительском виджете, можно нажать :
GTRL+1 - вы получите вертикальный бокс (QVBoxLayout).
GTRL+2 - горизонтальный бокс (QHBoxLayout).
CTRL+5 - фасеточная разметка (QGridLayout).
CTRL+0 - среда уберет виджеты из контейнера. 

ПРИМЕЧАНИЕ: после того, как вы задали контейнер для виджета, вы не можете добавлять элементы вне контейнера. 
ПРИМЕЧАНИЕ: элементы можно объеденять во вспомогательные контейнеры, для этого следует их выделить (можно использовать выделение рамкой и кнопку Shift)

    Виджеты не делятся на типы. Все графические элементы - это виджеты. Можно объеденить группу элементов и сделать из них один виджет. Любой виджет можно "назвать" главным окном, и независимо отобразить. Вы можете, к примеру, сделать (кодом из 10 строк) десять виджетов-кнопок и отобразить каждый виджет. В результате получите на экране десять кнопок, 
не привязаных к какому-либо окну, но полностью функциональных. Все элементы зачастую дочерние непосредственно от виджета (QWidget). Вам достаточно знать (уметь прочитать в документации) основные свойства виджетов и пару-тройку  свойств непосредственно нужного вам элемента. Все свойства доступны через "окно свойств". Смысл неизвестных свойств в
большинстве случаев можно наглядно увидеть простым их изменением (при изменение свойства соответствующие изменения произойдут в окне редактора виджетов). Права на метод принадлежат вашему покорному слуге... Шутка.

    На первый взгляд среда разработки графического интерфейса имеет минимум функциональности. Право слово,не стоит расстраиваться по этому поводу. То, что редактор виджетов может только редактировать виджеты, это вполне нормально и где-то даже правильно. Однако это совсем не значит что это вся функциональность платформы Qt4.
    
    Среда сохраняет виджеты в файлы с расширением .ui в формате XML. Однако вам не стоит беспокоиться по этому поводу. В Qt4 есть грамотные средства которые позволяеют элементарно получить нужный вам Си++ код из файлов .ui.

-- Простое кодирование виджетов.
В частном случае шаблонная программа Qt4 на ОС Linux выглядит так :
Код

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <QtGui>

int main (int argc, char ** argv)
{
    QApplication app(argc,argv);
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));
    QWidget * widget;

    widget = new QWidget;
    widget->show ();

    return app.exec ();
}

Вместо UTF8, естественно, необходимо указать вашу кодировку (см. "echo $LANG", все что после точки). В данной программе создается один виджет, отображается на экран и управление передается Qt4 (app.exec ()). Чтобы контролировать виджет, создаются функции которые будут реагировать на сигналы или "события". Сигналы используются различными стандартными элементами, события используются когда вы создаете собственный виджет.

Для создания дочерних виджетов и размещения их в родительском, создается один из контейнеров :
Код

QVBoxLayout * layout = new QVBoxLayout;
QPushButton *push1, *push2;
push1 = new QPushButton;
push2 = new QPushButton;
layout->addWidget (push1);
layout->addWidget (push2);
widget->setLayout (layout);

Конечно, могут использоваться все виды элементов и контейнеров. Так же вы можете делать и использовать свои виджеты. Среда редактирования виджетов Qt4 поддерживает самодельные виджеты, т.е. вы можете создать свой виджет и работать с ним в визуальном (наглядном) режиме в самой среде.

-- Сборка.
Для создания программы из исходного кода, в Qt4 достаточно выполнить следующие действия :
1. Создать qt-проект.
2. Создать Makefile проекта.
3. Непосредственно слинковать программу.
Для первых двух пунктов (на начальном этапе) может использоваться программа qmake, для этого и предназначенная.
$ qmake -project
$ qmake
ПРИМЕЧАНИЕ: Возможно, на вашей системе необходимо использовать суффикс (-qt4, т.е. qmake-qt4)
Эти две команды создадут вам файл .pro с описанием нового проекта и Makefile для сборки, далее можно просто выполнить команду :
$ make
Все ! Бинарник, работающий на платформе Qt4 готов !

-- Использование файла .ui
Как вы помните, это файлы, созданные средой designer из комплекта Qt4. Эти файлы можно использовать двумя способами :
1. Преобразовать в код Си++
2. Использовать непосредственно. 
Если с первым все понятно, то второй требует пояснения. Так что начну как раз с него.
Qt4 позволяет сразу отображать виджеты, записанные в XML формате 
(файлы .ui). При создании таких виджетов в среде, вы указываете имена для всех элементов, которые выносите на виджет. 
Эти имена записаны в результирующем файле .ui. Во премя выполнения вы можете отобразить виджет, а к его элементам обращаться при помощи специальной функции, которая вернет вам указатель на нужный элемент по его имени. Даже преобразование полученного указателя к нужному классу Qt4 берет на себя.

Код

QFile file("myform.ui");
file.open(QFile::ReadOnly);
QWidget widget = loader.load(&file, this);
file.close();
widget->show ();

Приведенный выше код отобразит ваш виджет myform, который вы ранее сделали при помощи designer'а. Теперь получить контроль над [существующей] кнопкой, к примеру, с именем "pushButton_1" можно так :

Код

QPushButton * pushButton1;
pushButton1 = widget->findObject ("pushButton_1");


-- Преобразование .ui -> Си++ код.
Для этого существует специальная утилита - uic. Чтобы получить Си++ код, достаточно выполнить uic для нужного файла и перенаправить поток вывода в будущий файл-исходник.
$ uic anywidget.ui >./ui_anywidget.h
ПРИМЕЧАНИЕ: Начиная с четвертой версии, uic не поддерживает создание отдельных файлов для кода и файла заголовков.

В означенном примере uic создаст код для создания вашего виджета anywidget.ui, завернутый в класс и namespace Ui. Все такие классы будут доступны из Ui::<имя класса>. Тут следует отметить, что классы, созданные uic, не являются дочерними от каких-либо других, в том числе QWidget или даже QObject.

    Для использования класса uic, можно либо создать виджет, который наследует QWidget и класс uic, либо создать объект данного класса и вызывать setupUi для каждого виджета, где вы хотите отобразить элементы.
Первый способ (наследование) :
Код

class MyWidget : public QWidget, public Ui::Dialog
{
    Q_OBJECT
    ...
};


Отображение объекта :
Код

MyWidget * widget = new MyWidget;
widget->show ();


Второй способ (setupUi) :
Код

QDialog *window = new QDialog;
Ui::Dialog ui;
ui.setupUi(window);
window->show();

ПРИМЕЧАНИЕ : если вы захотите добавить сигналы либо слоты в MyWidget из первого примера, вам придется дополнительно запустить "moc" (см. ниже).

Добавлено @ 04:37 
-- Сигналы и слоты.
Сигналы и слоты - расширение языка Си++, позволяющее объектам взаимодействовать между собой при помощи простых механизмов. Когда один объект хочет проинформировать другой о том, что в нем произошле какое-то событие, он посылает сигнал. Объект-получатель сигнала должен иметь слот, специальным образом оформленную функцию, подключенный к этому сигналу.
 Сигналы используются когда основная задача объекта (виджета, таймера...), является информирование о происшествии чего-либо. К одному слоту можно подключить любое 
количество сигналов, так же как и любой сигнал можно подключить к любому количеству слотов.

Объявление слотов :
Код
    
    public slots:
        void ok_clicked (bool);


Объявление сигнала (часть код из QAbstractButton)
Код

Q_SIGNALS:
    ...
    void clicked(bool checked = false);
    ...

Здесь Q_SIGNALS - макрос эквивалентный "public signals:"
Для подключения сигнала к слоту, используется нечто вроде :
Код

connect (okButton, SIGNAL (clicked (bool)), this, SLOT (ok_clicked (bool)));

Где первые два аргумента - объект и его сигнал, следующие - объект-получатель, и его слот. Заметьте, сигналы и слоты записываются в специальных макросах, с указанием списка типов аргументов. При несовпадении аргументов, или отсутствии сигнала/слота, Qt выведет предупреждающее сообщение во время выполнения, т.е. при запуске connect. На этапе компиляции правильность аргументов не проверяется.

Использовать "connect" или "disconnect" вы можете непосредственно. Для объялвения слота же, необходимо произвести линковку вашего объекта при помощи компилятора мета-объектов "moc". Иначе Qt не найдет ваш слот во время выполнения программы, о чем и выдаст предупреждающее сообщение вроде :
Цитата

Object::connect: No such slot MyMainForm::OK_clicked()
Object::connect:  (sender name:   'okButton')
Object::connect:  (receiver name: 'Dialog')

Вы не должны пренебрежительно относиться к подобным сообщениям, ибо это практически такая же ошибка, что и 
"Segmentation Fault".

Когда объект хочет послать сигнал, он использует "emit", к примеру так :
Код

    emit q->clicked(checked);

Где q - имя объекта, содержащего сигнал (его можно опускать, если используется текущий объект).

По скорости обработки сигналов есть такие цифры (из официальной документации Qt).
На процессоре 500МГц (за 1 с.) - 2,000,000 сигналов, подключенных к одному слоту, или 1,200,000 сигналов, подключенных к двум слотам. 

-- moc
Компилятор мета-объектов. При объявлении мета объекта (все объекты, которые используют какое-либо расширение Qt), его необходимо специальным образом обработать. Скажем так :
Цитата

    moc ui_anywidget.h >moc_anywidget.cpp

Вы так же должны подключить файл moc_anywidget.cpp к вашему проекту и обновлять его при обновлении ui_anywidget.h (а фактически, при изменении anywidget.ui). Логичней, конечно, просто дописать в файл проекта .pro, слудующие переменные :
Цитата

FORMS += *.ui
SOURCES += *.cxx
HEADERS += *.h

После изменения, естестественно, выполнить qmake, для получения обновления Makefile.
ПРИМЕЧАНИЕ: Оффициальная документация Qt предполагает непосредственное перечисление файлов, вместо использования шаблона. При использовании шаблона со звездочкой, могут возникнуть "недоразумение", если вы выполните qmake, в месте, где уже есть скомпилированный файл .ui. Так что перед запуском qmake - выполняйте "make clean".

С любовью из Сибири...
Oleg aka GrayCardinal.
graycardinalster dog gmail dot com

Автор: MAKCim 15.2.2007, 11:02
GrayCardinal
я смотрю ты всерьез за Qt взялся  smile 
за старание лови +

Автор: GrayCardinal 15.2.2007, 12:55
MAKCim
Цитата

за старание лови +

Мило.


Автор: powerfox 15.2.2007, 13:48
GrayCardinal, по qt4 есть классная книга, но пока только на английском. Это переработанное издание книги по qt3. Где-то на форуме был линк.

Автор: GrayCardinal 15.2.2007, 15:34
powerfox
По qt4 есть классная вещь. Называется - документация. Правда на английском smile

Автор: Ch0bits 18.2.2007, 20:53
Смотрю САБЖ и радуюсь за сипипишников. Вам GUI писать на столько же просто, как и нам, жабистам.  smile 

Автор: GrayCardinal 18.2.2007, 21:02
Ch0bits
Да я сам в шоке. Особенно когда узнал что можно нативные проги делать под винду, прямо в лине. Причем с GUI и SQL. Сейчас пытаюсь техпроцесс наладить. Qt4/Linux -> Qt4/Win smile

Автор: BobiKK 19.2.2007, 21:50
Цитата(Ch0bits @ 18.2.2007,  20:53)
Смотрю САБЖ и радуюсь за сипипишников. Вам GUI писать на столько же просто, как и нам, жабистам.  smile

Я бы даже сказал полегче smile Имхо, конечно, но сигналы/слоты вещь интересная и удобная. Ну и атоматические механизмы освобождения памяти в qt работают не хуже gc жабского.


P.S. Правда вот лицензия дорогова-та. 

Автор: powerfox 19.2.2007, 22:37
Цитата(BobiKK @  19.2.2007,  22:50 Найти цитируемый пост)
P.S. Правда вот лицензия дорогова-та. 

Согласен, но opensource версия есть и под винду, и под мак.

Автор: BobiKK 20.2.2007, 00:03
Понимаешь в чем проблема, у нас в фирме весь софт написан под венду. Мы бы с удовольствием начали постепенный переход на Линуксы, но для этого софт нужно переписать под что-то кроссплатформенное. QT приходит первым на ум. Только вот, открывать исходники наших программ и выкладывать их на сервере для свободного скачивания, имхо, идея не самая лучшая. А лицензия на разработку одноверменно под Linux/Win выйдет подороже, чем дальше продолжать писать под венду и закупать виндоусы.

Автор: GrayCardinal 20.2.2007, 00:59
BobiKK
Ё. Так пишите опенсорсный-для -себя код smile Это же не коммерческое испеользование будет, ИМХО. Вы же не будете его продавать smile И кто будет знать что в закрытой конторе юзают каки-то там _самостоятельно написанные_ проги под Win/Qt4 ? Тем более требовать чтобы открыли сырцы ?

Добавлено @ 01:01 
ЗЫ
Я сам так делать буду  smile 

Автор: BobiKK 20.2.2007, 22:48
Если я не ошибаюсь, то у них там есть 2 лицензии: Open Source и всё остальное. Open source подразумевает, что где-то исходники должны лежать в свободном доступе. Всё равно где, пускай никто адреса не знает. Это понятно.
А вот на счет никто не узнает... Один раз конкуренты инспекцию наслали smile

Автор: GrayCardinal 21.2.2007, 02:11
BobiKK
Ну, у вас-то, конечно, все сложнее  smile 

Автор: nerezus 21.2.2007, 10:51
Цитата

Я бы даже сказал полегче 
 Почему легче? )

Цитата

Согласен, но opensource версия есть и под винду, и под мак. 
 Но иногда хочется писать не "по приколу", а заказы делать ;) за деньги  smile 

Цитата

Open source подразумевает, что где-то исходники должны лежать в свободном доступе.
 Что за глупость? Лицензия же там вроде GPL2, а где в ней написано, что ты должен выкладывать исходники, если не распространяешь программу?

Автор: GrayCardinal 21.2.2007, 17:55
Цитата

 Что за глупость? Лицензия же там вроде GPL2, а где в ней написано, что ты должен выкладывать исходники, если не распространяешь 
программу?

Ну, в принципе, мы к такому логическому заключению и пришли  smile 

Автор: Artemios 21.2.2007, 22:41
Цитата(nerezus @  21.2.2007,  11:51 Найти цитируемый пост)
Но иногда хочется писать не "по приколу", а заказы делать ;) за деньги

Хм... А что, за написание GPL-кода нельзя деньги получать? Не за право использования моего кода, но за сам факт моего снисхождения до его написания? 
  smile 

Автор: GrayCardinal 22.2.2007, 04:26
Убедительно попрошу флеймить в тему ..............   smile 

Автор: Artemios 15.6.2007, 20:24
Вот, начинаю развитие темы:
http://forum.vingrad.ru/forum/act-ST/f-314/t-159421/unread-1.html
только на Python-е.

Автор: bilbobagginz 16.6.2007, 00:38
Цитата

Если я не ошибаюсь, то у них там есть 2 лицензии: Open Source и всё остальное. Open source подразумевает, что где-то исходники должны лежать в свободном доступе. Всё равно где, пускай никто адреса не знает. Это понятно.
А вот на счет никто не узнает... Один раз конкуренты инспекцию наслали

это не имеет значения.
если ты пишешь код для себя, не распространяя его, напр. фирма IBM хочет сделать всем рабочим часики, которые будут им, рабочим в 15:30 выскакивать на дисплей и звонить и говорить "пора домой!"
то это прикладное ПО, внутреннее, и его никто никому не обязан выкладывать.
а вот если IBM захочет эти часики продавать, или даже бесплатно выдавать на скачку со своего внешнего сервера, вот тогда они будут должны быть добры и вивести код наружу.
идентичный случай был с фирмой linksys, которые создали на линуксе роутеры, и не выложили исходники.
на них наехали, и теперь, их роутеры самые удобные из бюджетных WRT54*.
smile
это насчет внутреннего ПО.
а насчет внешнего, пардон, месячная з/п программиста - не менее пары тыс. баксов.
Код

Platform    Console Edition    Desktop Light Edition    Desktop Edition
One Platform         $1780         $1990         $3300
Two Platforms        $2670         $2990         $4950
Three Platforms         $3560         $3980        $6600

Автор: powerfox 16.6.2007, 12:16
Цитата(bilbobagginz @  16.6.2007,  01:38 Найти цитируемый пост)
а насчет внешнего, пардон, месячная з/п программиста - не менее пары тыс. баксов.

Кстати, у них для студентов скидка ~ 50%, где-то видел прайс. 

Автор: nickless 16.6.2007, 15:06
Цитата(powerfox @  16.6.2007,  11:16 Найти цитируемый пост)
Кстати, у них для студентов скидка ~ 50%

И для маленьких фирм (мало дохода и народа) тоже, на странице с прайсами где-то мелким текстом написано.

Автор: keiman 4.8.2007, 19:50
Интересно, грамотный и интересный постинг.

Добавлено через 5 минут и 13 секунд
Цитата(Artemios @ 15.6.2007,  20:24)
Вот, начинаю развитие темы:
http://forum.vingrad.ru/forum/act-ST/f-314/t-159421/unread-1.html
только на Python-е.

Очень полезное продолжение темы!
Ждем продолжения.

Автор: JackYF 30.8.2007, 19:08
Цитата(GrayCardinal @  18.2.2007,  21:02 Найти цитируемый пост)
Да я сам в шоке. Особенно когда узнал что можно нативные проги делать под винду, прямо в лине. Причем с GUI и SQL. Сейчас пытаюсь техпроцесс наладить. Qt4/Linux -> Qt4/Win smile 

оппа, а я ищу... поделись по налаживанию техпроцесса. А то в созданной мной теме к чему-то хорошему мы так и не пришли...

Автор: powerfox 30.8.2007, 23:27
Цитата(JackYF @  30.8.2007,  20:08 Найти цитируемый пост)
оппа, а я ищу... поделись по налаживанию техпроцесса. А то в созданной мной теме к чему-то хорошему мы так и не пришли... 

Что за техпроцесс? Код совместим - ребутитесь и собираете проект.

Автор: JackYF 30.8.2007, 23:37
Цитата(powerfox @  30.8.2007,  23:27 Найти цитируемый пост)
Код совместим - ребутитесь и собираете проект. 

это понятно smile а вот если ребутиться некуда (к чему и хочется привести)? Просто, как мне показалось, имелся в виду именно этот вариант.

Автор: powerfox 31.8.2007, 00:26
Цитата(JackYF @  31.8.2007,  00:37 Найти цитируемый пост)
это понятно smile а вот если ребутиться некуда (к чему и хочется привести)? Просто, как мне показалось, имелся в виду именно этот вариант. 

В разделе программирования в nix недавно обсуждалось что-то похожее (или даже это).

Автор: JackYF 31.8.2007, 10:13
Цитата(powerfox @  31.8.2007,  00:26 Найти цитируемый пост)
В разделе программирования в nix недавно обсуждалось что-то похожее (или даже это). 

логично, я эту тему и создал там smile

Автор: powerfox 31.8.2007, 12:03
Цитата(JackYF @  31.8.2007,  11:13 Найти цитируемый пост)
логично, я эту тему и создал там smile 

smile

Автор: CompWorm 7.7.2008, 23:18
здравствуйте.
я не давно начал знакомство с Qt да и линуксом)) 
у меня назрело несколько нубских вопросов:

1) при помощи чего, кроме Qt для линукса можно написать гуёвое приложение, не сломав мозг? то есть с графической объектно-ориентированной средой разработки. только что-нибудь актуальное, а не мёртвое, вроде Kylix ))) язык значения не имеет, но лучше си-подобный.
2) я немного запутался в понимании смысла Qt... это набор сишных библиотек, при помощи которых облегчается создание gui или это виртуальная машина, выполняющая байт-код приложения, которое без нее не функционирует, типа явы и .NET ?
3) ясно что конечный бинарник для вин, никс и мак свой... но если брать только линуксовый бинарник, он остается зависим от конкретной линукс-системы и, скажем, конкретной версии ядра, или он в принципе всегда останется самостоятельным и рабочим для любой линукс системы и любой версии ядра этой системы без необходимости его перекомпилирования?
4) возможно я видел что-то не то  smile  - в опен версии нет поддержки сетевых виджетов и опен-жл... правда ли это и как быть, если да? 
5) этот вопрос вытекает из предыдущего - можно ли кулхацкерным методом собрать desktop edition из бесплатной?

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

Автор: JackYF 7.7.2008, 23:32
Цитата(CompWorm @  7.7.2008,  22:18 Найти цитируемый пост)
при помощи чего, кроме Qt для линукса можно написать гуёвое приложение, не сломав мозг?

Если Qt для тебя - сломать мозг, то ничего не подойдёт - остальное, имхо, сложнее. smile Варианты: gtk2[+], wxWidgets, fltk, tcl/tk...

Цитата(CompWorm @  7.7.2008,  22:18 Найти цитируемый пост)
это набор сишных библиотек, при помощи которых облегчается создание gui 

С++-ных, а так да. Никакой виртуальной машины.

Цитата(CompWorm @  7.7.2008,  22:18 Найти цитируемый пост)
или он в принципе всегда останется самостоятельным и рабочим для любой линукс системы и любой версии ядра этой системы?

Ничто не вечно под солнцем. Совместимость хорошая в обе стороны, но не идеальная.

Автор: CompWorm 8.7.2008, 09:25
JackYF
спасибо за четкие ответы +.
Qt мне моск пока не ломает, а очень даже нравится, просто интересуюсь альтернативами.

пойду искать инфу по gtk2[+], wxWidgets, fltk, tcl/tk для ощего знакомства  smile , но как-то я пока не встречал форумов с большими русскими сообществами по вышеперечисленным...  smile 

Автор: Любитель 8.7.2008, 14:20
Изучай лучше Qt, только 4-ую (!). Сеть, ОупенГЛ - всё есть и в OSE. Как вариант - PyQt.

Автор: CompWorm 8.7.2008, 16:13
Любитель
хм... а что же тогда мешает писать коммерческое проприетарное ПО на OSE? 
... только совесть  smile  ?

Автор: Любитель 8.7.2008, 16:31
Лицензия ;)

Добавлено через 43 секунды
Функциональные отличия коммерческой редакции: ActiveQt (only Windows) и драйвера для некоторых коммерческих СУБД.

Автор: CompWorm 8.7.2008, 17:55
ну что ж))  ждем новых статей по Qt... надеюсь тут скоро появится отдельная ветка по нему с большим количеством поклонников. по крайней мере меня Qt восхищает  smile 

Автор: CompWorm 8.7.2008, 18:13
а БД победить можно, судя по http://ru.opensuse.org/QT_%D0%B8_%D0%91%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85 статье

Автор: powerfox 8.7.2008, 20:42
Цитата(CompWorm @  8.7.2008,  18:55 Найти цитируемый пост)
ну что ж))  ждем новых статей по Qt...

http://trolltech.com ;)

Добавлено через 28 секунд
Цитата(CompWorm @  8.7.2008,  19:13 Найти цитируемый пост)
а БД победить можно, судя по этой статье

Что значит победить?

Автор: Любитель 9.7.2008, 12:04
Цитата(CompWorm @  8.7.2008,  17:55 Найти цитируемый пост)
надеюсь тут скоро появится отдельная ветка по нему с большим количеством поклонников

http://forum.vingrad.ru/forum/c-c++QT-gtk-wxWidgets.html smile

Автор: m0ro 11.7.2008, 04:25
http://www.crossplatform.ru/documentation/qtdoc4.3/index.php

может, кому сгодится

Автор: GrayCardinal 23.4.2009, 10:47
Хочу предупредить что с выходом в свет QTCreator'а, большая часть вышеописанного переходит в разряд "устарело". QTCreator теперь делает всю работу. QDevelop ещё жив, но, видимо, со следующими версиями креатора, умрет и он...  smile 

Автор: Peter 29.5.2009, 14:20
Удивился, когда узнал, что Qt выпущена под LGPL. Залез на сайт, посмотрел.
1. Не увидел, есть ли разница в возможностях (наборе классов) коммерческой, GPL и LGPL версиях.
2. Про свободную версию пишут: Qt SDK for Windows (Based on MinGW. Does not support VS compiler.) Значит, на VS2005+ можно только с коммерческой работать?

Добавлено через 2 минуты и 45 секунд
Хотя в колонке ссылок на Qt libraries 4.5 for Windows есть ссылка на Qt Supported Platforms. Среди них Visual Studio 2003, 2005, 2008 под Windows XP/Vista.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)