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
- 15554 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 не так... но есть кое что ещё, позже...
int main(int argc, char** argv){ тут уже тот код что выше }а не та ужасная 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
Ой, у меня почему-то мой
Ой, у меня почему-то мой коммент два раза запостился