«Hello world» в Qt Create

Мне всегда был симпатичен Qt. Он чем-то напоминал добрый старый VCL от Borland. Такой же шикарный набор классов на все случаи жизни и смерти).
И вот решил попробовать новую версию Qt Creator. IDE очень удобная и продуманная. Получаешь настоящее удовольствие от логичности системы. Например мне понравилась следующая фишка: при нажатие точки после объекта, в редакторе появляется «->». Горячие клавиши соответствуют Visual Studi -что очень удобно.
И так, эта заметка посвящена написанию пробного приложения в этой среде. Локаль по умолчанию была русская поэтому не удивляемся русскому меню.

  1. Заходим в меню «Файл» — «Новый файл или проект…»
    Новый файл или проект…
  2. «Проект Qt Widget»-«GUI приложение Qt» и нажать «Выбрать…»
  3. Обзываем проект и указываем где он будет находиться
  4. Указываем что это обычное дестопное приложении
  5. Далее Qt Create предлагает указать базовый класс для вашего приложения. QMainWindow – отвечает за главное окно в приложение. Нам это подходит)
  6. Любуемся на свежий проект…
  7. Нажимаем на «mainwindow.ui». В этом файле находиться XML описывающий структуру главного окна. Но о чудо…открывается редактор диалога). Слева находиться список контролов которые вы можете поместить на форму. Справа список объектов на форме и свойства выделенного объекта. Не дать не взять Delphi 🙂
  8. В левом списке выбираем «Push Button» и перетаскиваем на форму. Вызываем контекстное меню для этой кнопки и выбираем пункт «изменить objectName..». Конечно это можно сделать и через список свойств, но там иногда быстрей.
  9. Меняем имя объекта на «butTest»
  10. Теперь назначаем событие на кнопку. Qt использует так называемую систему сигналов и слотов. Свяжем нашу кнопку с кликом.
    Вызовите контекстное меню для кнопки и выберите пункт «Перейти к слоту»
  11. Выбираем «cliced()» — сигнал при нажатие.
  12. Qt Create создал в классе MainWindow функцию on_butTest_clicked().
  13. Приписываем туда код который будет выводить сообщение (Не забыв прописать заголовочный файл для QMessageBox).
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QMessageBox>
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    void MainWindow::on_butTest_clicked()
    {
        QMessageBox mbox;
        mbox.setText("Пример");
        mbox.exec();
    }
    
  14. Запускаем приложение
  15. Нажимаем кнопку «PushButton» и получаем… кракозябры.
  16. Переходим в main.cpp и прописываем код проставляющий кодировку по умолчанию ANSI
    #include <QtGui/QApplication>
    #include "mainwindow.h"
    #include <QTextCodec>
    int main(int argc, char *argv[])
    {
        QTextCodec::setCodecForLocale(QTextCodec::codecForName("ANSI"));
        QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
        QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
    

    С точки зрения идеологии Qt — это не правильный путь. Локаль ANSI она встречается только на Windows, а на Linux — это редкость-дивная. Обычно все строковые ресурсы выносятся в специальный файл и подгружаются динамически. Но я максимально упростил решение проблемы)

  17. Теперь усложним код. Накидаем на форму дополнительные элементы (lineEdit, listWidget)
  18. Прописываем в on_butTest_clicked новый код
    void MainWindow::on_butTest_clicked()
    {
        // Получаем текст из поля ввода
        QString str = ui->lineEdit->text();
        if(str.isEmpty()){
            QMessageBox mbox;
            mbox.setText("Укажите текст");
            mbox.exec();
            return;
        }
    
        // Ищем строчку в listWidget
        QList<QListWidgetItem *> result_find = ui->listWidget->findItems(str, Qt::MatchExactly);
        if(result_find.count() == 0){
            ui->listWidget->addItem(str);       // Добавляем
        }
        else{
            result_find[0]->setSelected(true);  // Выделяем если уже есть
        }
    }
    
  19. Любуемся на результат 🙂

«Hello world» в Qt Create: 3 комментария

  1. Уведомление: Русская речь в Qt приложениях « IT записки

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *