如何创建一个QT项目

  • 如何创建一个QT项目

    • 1.创建新项目
    • 2.配置选择
    • 3.增加按钮
    • 4.按钮和窗体的大小标签图标设置
    • 5.信号与槽
    • 6.自定义信号与槽
  • 代码

1.创建新项目

点击文件->新建项目->

Application->Qt Widgets Application->

choose.

2.配置选择

名称->路径->

Kit Selection->MinGW->

类名->基类:QWidget->不创建界面->

项目管理.

3.增加按钮

  1. #ifndef MAINWIDGET_H
  2. #define MAINWIDGET_H
  3. #include <QWidget>
  4. #include <QPushButton>
  5. class MainWidget : public QWidget
  6. {
  7. Q_OBJECT
  8. public:
  9. explicit MainWidget(QWidget *parent = nullptr);
  10. private:
  11. QPushButton *MainButton_1;
  12. signals:
  13. public slots:
  14. };
  15. #endif // MAINWIDGET_H

#include <QPushButton>

QPushButton *MainButton_1;

先包含一个按钮的头文件,再实例化这个按钮.

按钮的实例化有两种:

  1. QPushButton MainButton_1;
  2. QPushButton *MainButton_1;

    MainButton_1 =new QPushButton("按钮名",父类);

一种为直接实例化,另一种先实例化一个指针,再对该指针分配内存空间.

按钮一定要设置父类,否则无法显示,推荐父类设置this.

4.按钮和窗体的大小标签图标设置

  1. MainButton_1->resize(1000,500);//重新设置尺寸
  2. this->setFixedHeight(500);//设置高度不可更改
  3. this->setFixedWidth(500);//设置宽度不可更改
  4. this->setFixedSize(500,500);//设置高和宽不可更改
  5. this->setWindowTitle("B2Button");//设置窗口标题
  6. this->setWindowIcon(QIcon("C:\\Users\\17655\\OneDrive\\图片\\鬼刀\\50.jpg"));//设置图标

5.信号与槽

  1. signals://信号位
  2. public slots://槽位

先实现一个简单的功能:

  1. connect(MainButton_1,&QPushButton::clicked,this,&MainWidget::close);

connect(信号发出者,信号名字,信号接收者,接收处理);

函数的效果为点击按钮时关闭窗口.

6.自定义信号与槽

首先我们先在发送端的头文件signals:下定义一个信号

  1. void Send_Open(void);

信号只需声名不需要定义!

然后我们再定义一个函数用于发送信号,emit.

  1. void MainWidget::sub_Send(void)
  2. {
  3. emit Send_Open();
  4. }

接下来再定义一个槽函数,位于接收端头文件的

public slots:

  1. void Cao_1(void);

并实现它:

  1. void Sec_Widget::Cao_1(void)
  2. {
  3. this->show();
  4. }

最后使用connect连接:

  1. //连接按钮1和信号的发送函数.
  2. connect(MainButton_1,&QPushButton::clicked,this,&MainWidget::sub_Send);
  3. //连接信号与槽函数
  4. connect(this,&MainWidget::Send_Open,&w2,&Sec_Widget::Cao_1);
  5. //当槽函数触发时,打开二号窗口

代码

MainWidget.h

  1. #ifndef MAINWIDGET_H
  2. #define MAINWIDGET_H
  3. #include <QWidget>
  4. #include <QPushButton>
  5. #include "sec_widget.h"
  6. class MainWidget : public QWidget
  7. {
  8. Q_OBJECT
  9. public:
  10. explicit MainWidget(QWidget *parent = nullptr);
  11. void sub_Send(void);
  12. private:
  13. QPushButton *MainButton_1;
  14. Sec_Widget w2;
  15. signals:
  16. void Send_Open(void);
  17. public slots:
  18. };
  19. #endif // MAINWIDGET_H

MainWidget.cpp

  1. #include "mainwidget.h"
  2. MainWidget::MainWidget(QWidget *parent) : QWidget(parent)
  3. {
  4. MainButton_1=new QPushButton("MainButton_1",this);
  5. setFixedSize(500,500);
  6. setWindowTitle("MainWindow");
  7. MainButton_1->setFixedSize(200,100);
  8. connect(MainButton_1,&QPushButton::clicked,this,&MainWidget::sub_Send);
  9. connect(this,&MainWidget::Send_Open,&w2,&Sec_Widget::Cao_1);
  10. }
  11. void MainWidget::sub_Send(void)
  12. {
  13. emit Send_Open();
  14. }

Sec_Widget.h

  1. #ifndef SEC_WIDGET_H
  2. #define SEC_WIDGET_H
  3. #include <QWidget>
  4. class Sec_Widget : public QWidget
  5. {
  6. Q_OBJECT
  7. public:
  8. explicit Sec_Widget(QWidget *parent = nullptr);
  9. signals:
  10. public slots:
  11. void Cao_1(void);
  12. };
  13. #endif // SEC_WIDGET_H

Sec_Widget.cpp

  1. #include "sec_widget.h"
  2. Sec_Widget::Sec_Widget(QWidget *parent) : QWidget(parent)
  3. {
  4. //构造函数
  5. }
  6. void Sec_Widget::Cao_1(void)
  7. {
  8. this->show();
  9. }

main.cpp

  1. #include "mainwidget.h"
  2. #include <QApplication>
  3. int main(int argc, char *argv[])
  4. {
  5. QApplication a(argc, argv);
  6. MainWidget w;
  7. w.show();
  8. return a.exec();
  9. }

5.从零开始创建一个QT窗口按钮的更多相关文章

  1. (7)nehe教程1 创建一个OpenGL窗口:

    不要用那个nehe ndk了 误人子弟! 转自: 一个窗口,代码可真多啊 http://www.yakergong.net/nehe/ 在这个教程里,我将教你在Windows环境中创建OpenGL程序 ...

  2. 我的Go语言学习之旅七:创建一个GUI窗口

    在上次中,刚刚学过了  弹窗效果.这里再接着学习一下怎样创建一个窗口. 还是老路子,先上代码: package main import ( "github.com/lxn/go-winapi ...

  3. 创建一个apk:按钮-click-文字display,测试apk;安装在真机进行调试的方法

    问题引入: 怎么样在一个app做event事件?例如touch操作,滑动操作,和按键事件(back,home等) 回答1:device.touch(x,y) ---获取device对象,然后touch ...

  4. 从零开始创建一个 PHP 扩展

    创建一个扩展的基本步骤都有哪些.示例中,我们将实现如下功能: <?phpecho say();?> 输出内容: $ php ./test.php$ hello word 在扩展中实现一个s ...

  5. Nehe OpenGL教程第一课-创建一个OpenGL窗口(Win32)

       原文英文地址为:Creating an OpenGL Window (Win32),翻译的chm中文格式文档下载地址为:OpenGL教程电子书(chm格式)中文版,源代码在官网上也可以下载到,每 ...

  6. 建议收藏,从零开始创建一个Activiti工作流,手把手教你完成

    环境配置 项目环境: JDK1.8 tomcat7 maven3.5 开发工具: IDEA activiti7 创建项目 目标:创建一个maven项目,集成Activiti,并自动生成25张数据库表 ...

  7. [STM32F10x] 从零开始创建一个基于标准库的工程

    硬件:STM32F103C8T6 平台:MDK-AMR V4.70 1.创建一个Keil uVision 的工程 要点:相同类型的源文件放在一起以便于管理       2.添加标准库源文件 3.添加几 ...

  8. 创建一个QT for Android的传感器应用应用程序(摘自笔者2015年将出的《QT5权威指南》,本文为试读篇)

     这个手册描述了使用Qt Quick面访的方式在Android和ios设备上开发QtQuick应用程序的方法.我们使用Qt Creator实现一个QtQuick应用程序,这个应用程序基于加速器的值 ...

  9. 创建一个OpenGL窗口

    在上节课Windows10+VS2017 用GLFW+GLAD 搭建OpenGL开发环境 中,我们搭建好了OpenGL开发环境.这节课编写代码去测试开发环境. 还是用上节课创建的OpenGL项目,右击 ...

随机推荐

  1. YoyoGo微服务框架入门系列-快速编写WEB API

    前言 YoyoGo是一个使用Golang编写的一个简单.轻量.快速.基于依赖注入的微服务框架,目前依然在研发阶段,欢迎Star以及一起参与到框架的研发 GitHub地址:https://github. ...

  2. c++11-17 模板核心知识(十三)—— 名称查找与ADL

    名称分类 名称查找 ordinary lookup ADL (Argument-Dependent Lookup) 官网的例子 ADL的缺点 在C++中,如果编译器遇到一个名称,它会寻找这个名称代表什 ...

  3. PyQt(Python+Qt)学习随笔:QDateEdit日期编辑部件和QTimeEdit时间编辑部件

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 Designer输入部件中,Date Edit和T ...

  4. 第15.34节 PyQt(Python+Qt)入门学习:containers容器类部件QStackedWidget堆叠窗口部件详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 StackedWidget堆叠窗口部件为一系列窗口部件的堆叠,对应类为QStackedWi ...

  5. 一些vue项目

    https://segmentfault.com/a/1190000010330905

  6. P1654 OSU! 题解

    \(x\) 为该位置有 \(1\) 的期望. 统计两个值 : \(suma\) 和 \(sumb\). \(suma\) 表示连续 \(X\) 个 \(1\) , \(X\) 的平方的期望, \(su ...

  7. AcWing 362. 区间

    听书上说有贪心 + 数据结构的做法,研究了一下. 朴素贪心 考虑把所有线段按照右端点 \(b\) 从小到大排序,依次考虑每一条线段的要求: 如果已经满足要求则跳过 否则尽量选择靠后的数(因为之后的线段 ...

  8. centos 7 让脚本开机运行

    按照网上搜索的文章指导,有三种方式可以实现,个人觉得比较简单的是修改/etc/rc.d/rc.local,添加要开机执行的命令. 修改后,重启,发现要运行的服务没有启动. 搜索发现下面这篇博客解释了原 ...

  9. 【涂鸦物联网足迹】用煲仔饭来说明IaaS/PaaS/SaaS的区别

    最近在准备一些科普性的知识内容,发现大家对于一些基础性的知识概念还是有点模糊.今天先来简单介绍一下IaaS/PaaS/SaaS的区别~ 其实还有一个On-Premises(本地部署)的概念,也可以一并 ...

  10. Numpy的学习5-array的分割

    import numpy as np A = np.arange(12).reshape((3, 4)) print(A) """ array([[ 0, 1, 2, 3 ...