QT = Форма - определение размеров + кнопка + поле ввода
Primary tabs
Фактически просто переписываю пример для питона на Си++
вот что получилось =
#include < Windows.h > #include < QtCore\QtCore > #include < QtGui\QtGui > #pragma comment(lib, "QtCore4.lib") #pragma comment(lib, "QtGui4.lib") int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpcmdline, int ncmdshow) { // блок настройки кодировки // выбирайте кодировку в соответсвии с реальной кодировкой исходника QTextCodec* codec = QTextCodec::codecForName("cp1251"); QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForLocale(codec); QApplication app2(ncmdshow, (char **)lpcmdline); //конец блока настройки кодировки QWidget widget; //#изменяем размеры родительского виджета widget.resize(400, 400); widget.setWindowTitle("simple"); //# вторым параметров в конструктор кнопки передаём ссылку на виджет //# таким образом мы показываем что хотим видеть кнопку именно на форме (виджете) //#а не где-то ещё QPushButton button2("HEllo WOrld =) !!!)))", &widget); //#зададим подсказку - появится при наведении курсора мыши на кнопку button2.setToolTip("Это кнопка создана <b>QT4.8.3</b> - на Си++ "); //# изменим размер кнопки //# метод .sizeHint() - возвращает оптимальный размер button2.resize(button2.sizeHint()); //#но если мы желаем задать размер сами ,то так: button2.resize(150,80); // переместим кнопку относительно левого верхнего угла //#родительского виджета button2.move(200, 300); // //#ну и давайте -добавим что-то для передачи информации - //#поле текстового ввода: QLineEdit edit("буквы сюда))",&widget); edit.setDragEnabled(1); edit.move(100, 100); widget.show(); return app2.exec(); }
Ещё примеры работы с GUI на QT здесь
- Log in to post comments
- 14270 reads
humanmashine
Sun, 11/11/2012 - 21:26
Permalink
ААААААААААААААААААААААА!!!!!!
ААААААААААААААААААААААА!!!!!! Кощунство!!!!!!!!!! Как это!!!!!!! Qt кросплатформенная библиотека, она позволяет писать приложения и обращаться к системным настройкам в общем, не привязывая к платформе. А тут платформозависимый код совместно с кроссплатформенным..... о мои глаза.... - это нож в моё сердце )))
vedro-compota
Sun, 11/11/2012 - 21:27
Permalink
в смысле#include < Windows.h
в смысле
или что именно не нравится?
_____________
матфак вгу и остальная классика =)
humanmashine
Sun, 11/11/2012 - 22:01
Permalink
И заголовок тоже, и функция
И заголовок тоже, и функция main.
Иду по порядку. Дело в том, что Qt C++ - это не PyQt, в последнем всё уже скомпилированно и вам надо просто подключить добро, с Qt C++ всё гораздо сложнее, там приложение проходит два этапа компиляции -первый это qmake а потом уже стандартное компилирование. Для нормальной работы qmake необходим правильный файл с расширение .pro , для каждого проекта он настраивается по-особому.
Итак, как без гемороя делать коссплатформенный код с Qt, первый способ (он почему-то не был выбран): это использовать QtCreator - который сам сделает файл .pro и предоставит графический интерфейс его конфигурирования, для простых проектов лезть в файл .pro вам не придётся. QtCreator также предоставит много удобных иснтрументов для создания GUI ну и автоматом будет предлагать платформонезависимый код в автозаполнении при создании проектов.
Второй способ - это простой тектовый редактор - тогда вашими ручками сами будете всё набирать, и .pro файл тоже, а компилить тоже ручками - не ахти.
Третий способ. я не пробовал, это выбранный тут через VisualStudio - так вот, я не знаю как она обращается с .pro файлом, и как хорошо обращается с qmake, но я вижу по коду, что при создании проекта она просто издевается над Qt. Итак, что надо исправить чтобы текст программы стал кроссплатформенным в этом примере, и его можно было бы скопировать и скомпилировать под Linux без изменений:
именно по этому блоку я подозреваю что что-то с qmake в VS не так... но есть кое что ещё, позже...
а не та ужасная WinMain, кстати те аргументы что выше в main как раз и передаются в QApplication , а не как у вас
Тоже с путями, пути нужно писать в стиле Linux, при компиляции в Windows qmake их переделает как надо.
Вот эти факты тоже наводят меня на мысль что там у вас что-то не так с qmake, так как зависимые пути и бубен с кодировкой, снижают переносимость кода
Ну вроде всё, ещё раз скажу, что как я говорил ранее гдето, Qt C++ это очень сложно, теже слои, о кторых я также ранее говорил - про них на форумах мало пишут, а они база, причём сам класс QLayout - это шибко сложно, всё что надо - это научиться юзать QBoxLayout QHBoxLayout QVBoxLayout.
Короче, если грамотно подходить к Qt C++ то го читать Макса Шлее, это не PyQt. Либо пересаживаться на QtCreator. Так как без глубокого познания работы Qt самому отследить что зависит от платформы, а что нет - сложно. А QtCreator многое автоматизирует.
vedro-compota
Sun, 11/11/2012 - 22:04
Permalink
вот он слой = http://fkn
вот он слой = http://fkn.ktu10.com/?q=node/2749
да.........что я про pro читал когда этот ужас настраивал......
_____________
матфак вгу и остальная классика =)
humanmashine
Sun, 11/11/2012 - 22:11
Permalink
Ой, у меня почему-то мой
Ой, у меня почему-то мой коммент два раза запостился