Qt Tutorials For Beginners – Simple Notepad Application




Qt Tutorials For Beginners
Qt Tutorials For Beginners

qt notepad project structure

qt notepad design

qt notepad design
qt notepad design

QtNotepadDemo.pro

#-------------------------------------------------
#
# Project created by QtCreator 2016-05-26T17:28:11
#
#-------------------------------------------------

QT       += core gui printsupport

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = QtNotepadDemo
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

RESOURCES += \
    resource.qrc

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_actionNew_triggered();

    void on_actionCopy_triggered();

    void on_actionOpen_triggered();

    void on_actionSave_triggered();

    void on_actionSave_as_triggered();

    void on_actionCut_triggered();

    void on_actionPaste_triggered();

    void on_actionRedo_triggered();

    void on_actionUndo_triggered();

    void on_actionAbout_Notepad_triggered();

    void on_actionFont_triggered();

    void on_actionColor_triggered();

    void on_actionBackground_Color_triggered();

    void on_actionBackgroung_Color_Edit_Text_triggered();

    void on_actionPrint_triggered();

private:
    Ui::MainWindow *ui;
    QString file_path_;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QFileDialog>
#include <QTextStream>
#include <QMessageBox>
#include <QFontDialog>
#include <QFont>
#include <QColorDialog>
#include <QColor>
#include <QPrinter>
#include <QPrintDialog>
MainWindow::MainWindow(QWidget *parent) :
  QMainWindow(parent),
  ui(new Ui::MainWindow)
{
  ui->setupUi(this);
  this->setCentralWidget(ui->textEdit);
}

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

void MainWindow::on_actionNew_triggered()
{
  file_path_ = "";
  ui->textEdit->setText("");
}

void MainWindow::on_actionCopy_triggered()
{
  ui->textEdit->copy();
}

void MainWindow::on_actionOpen_triggered()
{
  QString file_name = QFileDialog::getOpenFileName(this,"Open the file");
  QFile file(file_name);
  file_path_ = file_name;
  if(!file.open(QFile::ReadOnly | QFile::Text)) {
      QMessageBox::warning(this,"..","file not open");
      return;
    }
  QTextStream in(&file);
  QString text = in.readAll();
  ui->textEdit->setText(text);
  file.close();
}

void MainWindow::on_actionSave_triggered()
{

  QFile file(file_path_);
  if(!file.open(QFile::WriteOnly | QFile::Text)) {
      QMessageBox::warning(this,"..","file not open");
      return;
    }
  QTextStream out(&file);
  QString text = ui->textEdit->toPlainText();
  out << text;
  file.flush();
  file.close();
}

void MainWindow::on_actionSave_as_triggered()
{
  QString file_name = QFileDialog::getSaveFileName(this,"Open the file");
  QFile file(file_name);
  file_path_ = file_name;
  if(!file.open(QFile::WriteOnly | QFile::Text)) {
      QMessageBox::warning(this,"..","file not open");
      return;
    }
  QTextStream out(&file);
  QString text = ui->textEdit->toPlainText();
  out << text;
  file.flush();
  file.close();
}

void MainWindow::on_actionCut_triggered()
{
  ui->textEdit->cut();
}

void MainWindow::on_actionPaste_triggered()
{
  ui->textEdit->paste();
}

void MainWindow::on_actionRedo_triggered()
{
  ui->textEdit->redo();
}

void MainWindow::on_actionUndo_triggered()
{
  ui->textEdit->undo();
}

void MainWindow::on_actionAbout_Notepad_triggered()
{
  QString about_text;
  about_text  = "Auther : somebody\n";
  about_text += "Date   : 12/05/2016\n";
  about_text += "(C) Notepad  (R)\n";

  QMessageBox::about(this,"About Notepad",about_text);
}

void MainWindow::on_actionFont_triggered()
{
  bool ok;
  QFont font = QFontDialog::getFont(&ok, this);
  if (ok) {
      ui->textEdit->setFont(font);
    } else return;

}

void MainWindow::on_actionColor_triggered()
{
  QColor color = QColorDialog::getColor(Qt::white,this,"Choose Color");
  if(color.isValid()) {
      ui->textEdit->setTextColor(color);
    }
}

void MainWindow::on_actionBackground_Color_triggered()
{
  QColor color = QColorDialog::getColor(Qt::white,this,"Choose Color");
  if(color.isValid()) {
      ui->textEdit->setTextBackgroundColor(color);
    }
}

void MainWindow::on_actionBackgroung_Color_Edit_Text_triggered()
{
  QColor color = QColorDialog::getColor(Qt::white,this,"Choose Color");
  if(color.isValid()) {
      ui->textEdit->setPalette(QPalette(color));
    }
}

void MainWindow::on_actionPrint_triggered()
{
  QPrinter printer;
  printer.setPrinterName("desierd printer name");
  QPrintDialog dialog(&printer,this);
  if(dialog.exec() == QDialog::Rejected) return;
  ui->textEdit->print(&printer);
}

main.cpp

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

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  MainWindow w;
  w.show();

  return a.exec();
}

mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>513</width>
    <height>361</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <layout class="QHBoxLayout" name="horizontalLayout">
    <item>
     <widget class="QTextEdit" name="textEdit"/>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>513</width>
     <height>21</height>
    </rect>
   </property>
   <widget class="QMenu" name="menuFile">
    <property name="title">
     <string>File</string>
    </property>
    <addaction name="actionNew"/>
    <addaction name="actionOpen"/>
    <addaction name="separator"/>
    <addaction name="actionSave"/>
    <addaction name="actionSave_as"/>
    <addaction name="separator"/>
    <addaction name="actionPrint"/>
   </widget>
   <widget class="QMenu" name="menuEdit">
    <property name="title">
     <string>Edit</string>
    </property>
    <addaction name="actionCut"/>
    <addaction name="actionCopy"/>
    <addaction name="actionPaste"/>
    <addaction name="separator"/>
    <addaction name="actionRedo"/>
    <addaction name="actionUndo"/>
    <addaction name="separator"/>
    <addaction name="actionFont"/>
    <addaction name="actionColor"/>
    <addaction name="actionBackground_Color"/>
    <addaction name="actionBackgroung_Color_Edit_Text"/>
   </widget>
   <widget class="QMenu" name="menuAbout">
    <property name="title">
     <string>about</string>
    </property>
    <addaction name="actionAbout_Notepad"/>
   </widget>
   <addaction name="menuFile"/>
   <addaction name="menuEdit"/>
   <addaction name="menuAbout"/>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
   <addaction name="actionNew"/>
   <addaction name="actionOpen"/>
   <addaction name="actionSave"/>
   <addaction name="actionSave_as"/>
   <addaction name="separator"/>
   <addaction name="actionCut"/>
   <addaction name="actionCopy"/>
   <addaction name="actionPaste"/>
   <addaction name="separator"/>
   <addaction name="actionRedo"/>
   <addaction name="actionUndo"/>
   <addaction name="separator"/>
   <addaction name="actionAbout_Notepad"/>
  </widget>
  <widget class="QStatusBar" name="statusBar"/>
  <action name="actionNew">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/rec/img/new.png</normaloff>:/rec/img/new.png</iconset>
   </property>
   <property name="text">
    <string>New</string>
   </property>
  </action>
  <action name="actionOpen">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/rec/img/open.png</normaloff>:/rec/img/open.png</iconset>
   </property>
   <property name="text">
    <string>Open</string>
   </property>
  </action>
  <action name="actionSave">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/rec/img/save.png</normaloff>:/rec/img/save.png</iconset>
   </property>
   <property name="text">
    <string>Save</string>
   </property>
  </action>
  <action name="actionSave_as">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/rec/img/save-as.png</normaloff>:/rec/img/save-as.png</iconset>
   </property>
   <property name="text">
    <string>Save as</string>
   </property>
  </action>
  <action name="actionCut">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/rec/img/cut.png</normaloff>:/rec/img/cut.png</iconset>
   </property>
   <property name="text">
    <string>Cut</string>
   </property>
  </action>
  <action name="actionCopy">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/rec/img/copy.png</normaloff>:/rec/img/copy.png</iconset>
   </property>
   <property name="text">
    <string>Copy</string>
   </property>
  </action>
  <action name="actionPaste">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/rec/img/paste.png</normaloff>:/rec/img/paste.png</iconset>
   </property>
   <property name="text">
    <string>Paste</string>
   </property>
  </action>
  <action name="actionRedo">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/rec/img/redo.png</normaloff>:/rec/img/redo.png</iconset>
   </property>
   <property name="text">
    <string>Redo</string>
   </property>
  </action>
  <action name="actionUndo">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/rec/img/undo.png</normaloff>:/rec/img/undo.png</iconset>
   </property>
   <property name="text">
    <string>Undo</string>
   </property>
  </action>
  <action name="actionAbout_Notepad">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/rec/img/about.png</normaloff>:/rec/img/about.png</iconset>
   </property>
   <property name="text">
    <string>About Notepad</string>
   </property>
  </action>
  <action name="actionFont">
   <property name="text">
    <string>Font</string>
   </property>
  </action>
  <action name="actionColor">
   <property name="text">
    <string>Color</string>
   </property>
  </action>
  <action name="actionBackground_Color">
   <property name="text">
    <string>Background Color</string>
   </property>
  </action>
  <action name="actionBackgroung_Color_Edit_Text">
   <property name="text">
    <string>Backgroung Color Edit Text</string>
   </property>
  </action>
  <action name="actionPrint">
   <property name="text">
    <string>Print</string>
   </property>
  </action>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources>
  <include location="resource.qrc"/>
 </resources>
 <connections/>
</ui>

resource.qrc

<RCC>
    <qresource prefix="/rec">
        <file>img/about.png</file>
        <file>img/copy.png</file>
        <file>img/cut.png</file>
        <file>img/new.png</file>
        <file>img/open.png</file>
        <file>img/paste.png</file>
        <file>img/redo.png</file>
        <file>img/save.png</file>
        <file>img/save-as.png</file>
        <file>img/undo.png</file>
    </qresource>
</RCC>

output

qt notepad output


Partner Sites

VideoToGifs.com

EasyOnlineConverter.com

SqliteTutorials.com





Be the first to comment

Leave a Reply

Your email address will not be published.


*