close函数 qt_Qt界面开发(1)

本文介绍了Qt应用程序框架,探讨了父窗口与窗口的关系,特别是独立和嵌入窗口的显示方式。重点讲解了信号与槽机制,以及如何通过connect实现对象间的通信。最后,文章详细阐述了如何创建并使用自定义槽函数,以确保界面响应正确。
摘要由CSDN通过智能技术生成

参考

QT界面开发_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com
74d0868aaf4845873b9336db3025a546.png

如何学习Qt?——学习库函数的调用,了解每一个函数的功能、参数、返回值。(包含头文件)

第一天:
1、Qt的介绍
2、Qt的框架
3、项目文件(.pro)
4、第一个gt程序(hello qt)
5、父窗口和子窗口的区别(控件,部件,构件)
6、信号和槽(*)
7、坐标系统
8、内存回收机制 new delete
9、带菜单栏的窗口
10、对话框
第二天:
1、Qtcreator设计器的使用
2、常用控件
3、布局
4、自定义控件
5、常用事件的处理
第三天:
1、QPainter绘图
2、绘图设备(QPixmap,QImage,QBitmap,QPicture)
3、文件操作(QFile,QFileInfo,QDataStream,QTextStream,QBuffter)
第四天:
1、TCP编程,
2、UDP编程
3、UDP传输
4、多线程编程(多任务)
第五天上午:数据库编程
第五天下午~第六天:汽车销售管理系统

1.Qt应用程序框架

#include "widget.h"
#include <QApplication>  //应用程序类
//qt头文件没有.h
//头文件和类名一样
//Q开头、前两个字母大写

int main(int argc, char *argv[])
{
    //有且只有一个应用程序类的对象
    QApplication a(argc, argv);

    //Widget继承于QWidget,QWidget是一个窗口基类,所以Widget也是窗口类,w就是一个窗口
    Widget w;

    //我们写的代码

    //窗口创建默认是隐藏,需要人为显示
    w.show();

    //让程序一直执行,等待用户操作(等待事件的发生),a是前面创建的应用程序类对象
    //等价于:
    //a.exec();
    //return 0;
    return a.exec();
}

2.父窗口与窗口

/*如果不指定父对象,对象和对象(窗口和窗口)没有关系,是独立的
* a指定b为它的父对象,a放在b的上面
* 指定父对象,有两种方式:
* 1)setparent
* 2)通过构造函数传参
* 指定父对象,只需要父对象显示,上面的子对象自动显示/

独立窗口显示

#include "mainwindow.h"
#include <QApplication>
#include <QPushButton>
#include <QWidget>  //窗口控件基类

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget w;
    w.setWindowTitle(QString("主要看气质"));  //设置标题
    w.show();

    QPushButton b;
    b.setText("^_^"); //给按钮设置内容
    b.show();  

   
    return app.exec();
}

嵌入窗口显示

#include "mainwindow.h"
#include <QApplication>
#include <QPushButton>
#include <QWidget>  //窗口控件基类

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget w;
    w.setWindowTitle(QString("beauty"));  //设置标题

    //法1:指定父对象
    QPushButton b;
    b.setText("^_^"); //给按钮设置内容
    b.setParent(&w); //指定父对象
    b.move(100,100);  //移动坐标
    //b.show();

    //法2:通过构造函数传参
    QPushButton b1(&w);
    b1.setText("abc");


    w.show();
    return app.exec();
}

注:在上面的QWidget w;中,执行QWidget 的构造函数,我们的按钮函数也应该放在构造函数下去实现。

添加到mainwindow.h(如果添加到mainwindow.cpp中,构造函数执行完后被清理,则不会在main中调用时show出来,所以要放在mainwindow.h中)

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QPushButton>
#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private: //新加
    QPushButton b1;
    QPushButton *b2;
};

#endif // MAINWINDOW_H

mainwindow.cpp

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

    b1.setParent(this); //指定父对象
    b1.setText("^_^"); //给按钮设置内容
    b1.move(100,100);  //移动坐标

    b2=new QPushButton(this);  //为指针动态分配内存
    b2->setText("abc");

}

MainWindow::~MainWindow()
{

}

main.cpp

#include "mainwindow.h"
#include <QApplication>
#include <QPushButton>
#include <QWidget>  //窗口控件基类

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainWindow w;
    //w.setWindowTitle(QString("beauty"));  //设置标题

    w.show();
    return app.exec();
}

此时,按键按下无反应,需要connect与要跳转的内容进行连接。

3.信号与槽

信号与槽是Qt对象之间通信的接口。

mainwindow.cpp修改为:

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

    b1.setParent(this); //指定父对象
    b1.setText("close"); //给按钮设置内容
    b1.move(100,100);  //移动坐标

    b2=new QPushButton(this);  //为指针动态分配内存
    b2->setText("abc");

    //将b1的地址,即显示为close的按键,当采用pressed的方式,即按下时,功能设置为MainWindow类下面的close函数,即关闭
    /*  &b1:信号发出者,指针类型
     *  &QPushButton::pressed:处理的信号  &发送者的类名::信号名字
     *  this:信号接收者
     *  &MainWindow::close  槽函数,信号处理函数  &接收者的类名::槽函数名字
     */
    connect(&b1,&QPushButton::pressed,this,&MainWindow::close);


}

MainWindow::~MainWindow()
{

}

4.自定义槽函数

    /*自定义槽(槽函数的使用就是普通函数的用法)
     * 在qt5中,自定义槽可以是:任意的成员函数,普通全局函数,静态函数
     * 槽函数需要和信号一致(参数、返回值)
     * 由于信号都是没有返回值,所以,槽函数一定没有返回值
    */
    //released:抬起
    connect(b2,&QPushButton::released,this,&MainWindow::myslot);

    //接收信号者改成b1,当抬起(released)时,b1隐藏hide
    connect(b2,&QPushButton::released,&b1,&QPushButton::hide);

完整代码:mainwindow.cpp

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

    b1.setParent(this); //指定父对象
    b1.setText("close"); //给按钮设置内容
    b1.move(100,100);  //移动坐标

    b2=new QPushButton(this);  //为指针动态分配内存
    b2->setText("abc");

    //将b1的地址,即显示为close的按键,当采用pressed的方式,即按下时,功能设置为MainWindow类下面的close函数,即关闭
    /*  &b1:信号发出者,指针类型
     *  &QPushButton::pressed:处理的信号  &发送者的类名::信号名字
     *  this:信号接收者
     *  &MainWindow::close  槽函数,信号处理函数  &接收者的类名::槽函数名字
     */
    connect(&b1,&QPushButton::pressed,this,&MainWindow::close);

    /*自定义槽(槽函数的使用就是普通函数的用法)
     * 在qt5中,自定义槽可以是:任意的成员函数,普通全局函数,静态函数
     * 槽函数需要和信号一致(参数、返回值)
     * 由于信号都是没有返回值,所以,槽函数一定没有返回值
    */
    //released:抬起
    connect(b2,&QPushButton::released,this,&MainWindow::myslot);

    //接收信号者改成b1,当抬起(released)时,b1隐藏hide
    connect(b2,&QPushButton::released,&b1,&QPushButton::hide);
}
//自定义的槽函数以成员函数实现
void MainWindow::myslot()
{
    b2->setText("123");  //自定义的槽函数:用于改变打印值
}

MainWindow::~MainWindow()
{

}

注:当自定义槽函数为成员函数时,记得在mainwindow.h中进行声明,在mainwindow.cpp中进行实现

void myslot(); //与released对应,是一个无参数,无返回值的函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值