Урок 3. Программа SimplePad в QT Creator

 

Суть задумки в том, чтобы создать элементарный текстовый редактор с gui интерфейсом. 

Начнем с создания любого проекта с параметрами по умолчанию (во избежании недоразумений важно их не менять), сохраняем куда хотим, мне вообще пофиг, где вы храните свои проекты.

Затем, когда наш проект создан, переходим в mainwindow.ui и добавляем на поле 3 элемента:

Две "Push Button" с именами объекта "Btn1" и "Btn2" соответственно, а так же "Text Edit" с именем объекта "textEdit". Первая будет для выхода, вторая для очистки текстового поля.

Далее создаем пункты меню "Файл": "Открыть", "Сохранить", "Закрыть" с именами объекта "act2", "act4", "act6" соответственно.

Щелкнув по кнопке "Btn1" и "Btn2" правой кнопкой мыши, в контекстном меню выбираем пункт "Перейти к слоту", затем выбираем сигнал "clicked".

Для пунктов меню делаем то же самое, только с сигналом "Triggered".

Еще создадим пункт меню "Справка", под ним опцию "О программе", назовем ее "action". Сигнал тот же.

 

Содержание "main.cpp":


#include "mainwindow.h"
#include <QApplication>


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainWindow w; // Объявляем новое окошко
    w.setWindowTitle(("SimplePad")); // Задаем имя окошка. Такое, в полосочке наверху.
    w.show(); // Выводим новое окошко на экран.

    return app.exec();
}


Содержание mainwindow.cpp


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QTextStream>
#include <QMessageBox>
#include <QTextEdit>
#include <QPushButton>
#include <QFileDialog>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setWindowIcon(QIcon("/home/madmentat/griffin.ico"));
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_act6_triggered() // Закрытие программы через меню панели инструментов
{
    qApp->closeAllWindows();
    qApp->quit();
}

void MainWindow::on_act2_triggered() // Открываем файл
{

 QFile file(QFileDialog::getOpenFileName(this,tr("Открыть файл"),"",tr("Text Files (*.txt);;C++ Files (*.cpp *.h)"))); // указываем местоположения файла, с которым мы работаетм
 if(!file.open(QIODevice::ReadOnly))
 QMessageBox::information(0,"Ошибка!",file.errorString()); // Сообщение об ошибке, если что-то не получилось.
 QTextStream in(&file);
 ui->textEdit->setText(in.readAll());


}

void MainWindow::on_act4_triggered() // Конструкция "Сохранить" - не работает // "save" option. Don't know what to do, it's doesn't work :(
{
   
    //QTextEdit textEdit; // Объявляем наше окошко редактирования текста
    //QFile file(this); // указываем местоположения файла, с которым мы работаетм
    //if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
    //             return;

    //  QTextStream out(&file); //поток для записи текста
    //  out <<ui->textEdit->toPlainText();
    //  statusBar()->showMessage(tr("File saved"), 2000); // Эта функция выводит соответствующее сообщение в статусбар, но я так и не понел к чему эта большая цыфра.
}

void MainWindow::on_Btn1_clicked()
{
    qApp->closeAllWindows(); // вот эта строчка, по-видимому, закрывает все окна приложения
    qApp->quit(); // а эта закрывает само приложения
}

void MainWindow::on_Btn2_clicked()
{
    QTextEdit textEdit; // Объявляем наше текстовое поле
    ui->textEdit->clear(); // Очищаем его
}

void MainWindow::on_act0_triggered()
{
    QMessageBox::warning(this, "SimplePad v.1.1 Beta","<p align=justify>Данная программа разработана гениальным программистом Андреем Тютрюмовым в QT Creator специально для проекта <a href='http://www.madmentat.ru' target=blank>madmentat.ru</a></p>");

}

void MainWindow::on_act5_triggered() // конструкция "сохранить как" - работает
{
    QTextEdit textEdit; // Объявляем наше окошко редактирования текста
    QFile file(QFileDialog::getSaveFileName(this, tr("Save File"), "", tr("Text Files (*.txt);;C++ Files (*.cpp *.h)")));  // указываем местоположения файла, с которым мы работаетм
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
             return;

    QTextStream out(&file); //поток для записи текста
    out <<ui->textEdit->toPlainText();
    statusBar()->showMessage(tr("File saved"), 2000); // Эта функция выводит соответствующее сообщение в статусбар, но я так и не понел к чему эта большая цыфра.

}

 

 

 


SimplePad2

Вот и все. PROFIT!!!!11111

 

 

http://qt-doc.ru/standartnye-dialogovye-okna.html

http://www.newthinktank.com/2018/06/qt-tutorial-c-notepad-app/