Qt5 C++14教程-- 第一批程序

Qt5中的第一批程序

在Qt5 C++编程教程的这一部分,我们创建了我们的第一个程序。

我们显示一个工具提示和各种鼠标游标。我们把一个窗口放在屏幕的中心,并介绍信号和槽机制。

简单的例子

我们从一个非常简单的例子开始。

simple.cpp
#include <QApplication>
#include <QWidget>

int main(int argc, char *argv[]) {

    QApplication app(argc, argv);

    QWidget window;

    window.resize(250, 150);
    window.setWindowTitle("Simple example");
    window.show();

    return app.exec();
}

这个例子展示了一个基本的窗口在屏幕上显示。

#include <QApplication>

#include <QWidget>

我们包含必要的头文件。

QApplication app(argc, argv);

这是应用程序对象。每个Qt5应用程序必须创建这个对象。(除了控制台应用程序之外。)

QWidget window;

这是我们的主窗口部件。

window.resize(250, 150);

window.setWindowTitle("Simple example");

window.show();

在这里,我们调整窗口部件的大小并为我们的主窗口设置一个标题。在这种情况下,QWidget是我们的主窗口。最后,我们在屏幕上展示了这个窗口部件。

return app.exec();

exec方法启动应用程序的主循环

一个提示工具

一个提示工具是指应用程序中有关某个项目的具体提示。以下示例将演示如何在Qt5编程库中创建一个提示工具。

tooltip.cpp
#include <QApplication>
#include <QWidget>

int main(int argc, char *argv[]) {

  QApplication app(argc, argv);

  QWidget window;

  window.resize(350, 250);
  window.setWindowTitle("ToolTip");
  window.setToolTip("QWidget");
  window.show();

  return app.exec();
}

该示例显示了主QWidget的提示工具。

window.setWindowTitle("ToolTip");

我们使用setToolTip方法为QWidget小部件设置提示工具。

Qt5 光标

光标是一个小图标,用于指示鼠标指针的位置。在下面的示例中,我们将展示可以在程序中使用的各种光标。

cursors.cpp
#include <QApplication>
#include <QWidget>
#include <QFrame>
#include <QGridLayout>

class Cursors : public QWidget {

 public:
     Cursors(QWidget *parent = nullptr);
};

Cursors::Cursors(QWidget *parent)
    : QWidget(parent) {

  auto *frame1 = new QFrame(this);
  frame1->setFrameStyle(QFrame::Box);
  frame1->setCursor(Qt::SizeAllCursor);

  auto *frame2 = new QFrame(this);
  frame2->setFrameStyle(QFrame::Box);
  frame2->setCursor(Qt::WaitCursor);

  auto *frame3 = new QFrame(this);
  frame3->setFrameStyle(QFrame::Box);
  frame3->setCursor(Qt::PointingHandCursor);

  auto *grid = new QGridLayout(this);
  grid->addWidget(frame1, 0, 0);
  grid->addWidget(frame2, 0, 1);
  grid->addWidget(frame3, 0, 2);

  setLayout(grid);
}

int main(int argc, char *argv[]) {

  QApplication app(argc, argv);

  Cursors window;

  window.resize(350, 150);
  window.setWindowTitle("Cursors");
  window.show();

  return app.exec();
}

在这个示例中,我们使用了三个框架。每个框架都设置了不同的光标。

auto *frame1 = new QFrame(this);

创建了一个 QFrame 小部件。

frame1->setFrameStyle(QFrame::Box);

使用 setFrameStyle 方法设置了一个边框样式,这样我们就可以看到框架的边界。

frame1->setCursor(Qt::SizeAllCursor);

使用 setCursor 方法为框架设置了一个光标。

auto *grid = new QGridLayout(this);

grid->addWidget(frame1, 0, 0);

grid->addWidget(frame2, 0, 1);

grid->addWidget(frame3, 0, 2);

setLayout(grid)

这将把所有的框架组合成一行。我们将在布局管理章节中详细讨论这个问题。

Qt5 QPushButton

在下面的代码示例中,我们在窗口上显示一个按钮。点击按钮时,我们关闭应用程序。

pushbutton.cpp
#include <QApplication>
#include <QWidget>
#include <QPushButton>

class MyButton : public QWidget {

 public:
     MyButton(QWidget *parent = nullptr);
};

MyButton::MyButton(QWidget *parent)
    : QWidget(parent) {

  auto *quitBtn = new QPushButton("Quit", this);
  quitBtn->setGeometry(50, 40, 75, 30);

  connect(quitBtn, &QPushButton::clicked, qApp, &QApplication::quit);
}

int main(int argc, char *argv[]) {

  QApplication app(argc, argv);

  MyButton window;

  window.resize(250, 150);
  window.setWindowTitle("QPushButton");
  window.show();

  return app.exec();
}

在这个代码示例中,我们第一次使用了信号和槽的概念。

auto *quitBtn = new QPushButton("Quit", this);

quitBtn->setGeometry(50, 40, 75, 30);

我们创建了一个新的QPushButton。我们使用setGeometry方法手动调整大小并将其放置在窗口上。

connect(quitBtn, &QPushButton::clicked, qApp, &QApplication::quit);

当我们点击按钮时,会生成一个clicked信号。槽是对信号做出反应的方法。在我们的例子中,它是主应用程序对象的quit槽。qApp是一个全局指针,指向应用程序对象。它在QApplication头文件中定义。

加减运算

我们在本节展示了如何使用小部件进行通信。代码被分为三个文件。

plusminus.h
#pragma once

#include <QWidget>
#include <QApplication>
#include <QPushButton>
#include <QLabel>

class PlusMinus : public QWidget {

  Q_OBJECT

  public:
    PlusMinus(QWidget *parent = nullptr);

  private slots:
    void OnPlus();
    void OnMinus();

  private:
    QLabel *lbl;
};

这是示例的头文件。在此文件中,我们定义了两个槽和一个标签小部件。

class PlusMinus : public QWidget {

Q_OBJECT...

必须在声明自己的信号和槽的类中包含Q_OBJECT宏。

plusminus.cpp
#include "plusminus.h"
#include <QGridLayout>

PlusMinus::PlusMinus(QWidget *parent)
    : QWidget(parent) {

  auto *plsBtn = new QPushButton("+", this);
  auto *minBtn = new QPushButton("-", this);
  lbl = new QLabel("0", this);

  auto *grid = new QGridLayout(this);
  grid->addWidget(plsBtn, 0, 0);
  grid->addWidget(minBtn, 0, 1);
  grid->addWidget(lbl, 1, 1);

  setLayout(grid);

  connect(plsBtn, &QPushButton::clicked, this, &PlusMinus::OnPlus);
  connect(minBtn, &QPushButton::clicked, this, &PlusMinus::OnMinus);
}

void PlusMinus::OnPlus() {

  int val = lbl->text().toInt();
  val++;
  lbl->setText(QString::number(val));
}

void PlusMinus::OnMinus() {

  int val = lbl->text().toInt();
  val--;
  lbl->setText(QString::number(val));
}

我们有两个按钮和一个标签小部件。我们使用按钮增加或减少标签显示的数字。

connect(plsBtn, &QPushButton::clicked, this, &PlusMinus::OnPlus);

connect(minBtn, &QPushButton::clicked, this, &PlusMinus::OnMinus);

在这里,我们将clicked信号连接到它们的槽。

void PlusMinus::OnPlus() {

int val = lbl->text().toInt();

val++;

lbl->setText(QString::number(val));

}

在OnPlus方法中,我们确定标签的当前值。标签小部件显示一个字符串值,因此我们必须将其转换为整数。我们增加数字并为标签设置一个新的文本。我们将数字转换为字符串值。

main.cpp
#include "plusminus.h"

int main(int argc, char *argv[]) {

  QApplication app(argc, argv);

  PlusMinus window;

  window.resize(300, 190);
  window.setWindowTitle("Plus minus");
  window.show();

  return app.exec();
}

这是代码示例的主文件。

在本章中,我们创建了我们在Qt5中的第一个程序。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值