qt的一些基础源码

  • Post author:
  • Post category:其他


第一个qt窗口 (信号槽和基本操作)

mybutton.h

#ifndef MYBUTTON_H
#define MYBUTTON_H

#include <QWidget>
#include <QPushButton>

class MyButton : public QPushButton
{
    Q_OBJECT
public:
    explicit MyButton(QWidget *parent = 0);
    ~MyButton();
signals:

public slots:
};

#endif // MYBUTTON_H

mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>

//继承与QWidget
class MyWidget : public QWidget
{
    //支持Qt中的信号和槽使用
    Q_OBJECT

public:
    MyWidget(QWidget *parent = 0); //构造
    ~MyWidget(); //析构
};

#endif // MYWIDGET_H

main.cpp

#include "mywidget.h" //包含头文件
#include <QApplication> //包含QApplication头文件

//程序入口 argc命令行变量的数量 argv命令行变量数组
int main(int argc, char *argv[])
{
    QApplication a(argc, argv); //a 应用程序对象,对于Qt项目必须有应用程序对象,而且有且仅有一个
    MyWidget w; //创建一个MyWidget对象
    w.show(); //创建出的窗口对象并不会直接显示,需要调用show方法

    return a.exec(); //进入消息循环机制,阻塞状态
//    while(true)
//    {
//        if(点击叉子)
//            break;
//    }
}

mybutton.cpp

#include "mybutton.h"
#include <QDebug>
MyButton::MyButton(QWidget *parent) : QPushButton(parent)
{

}

MyButton::~MyButton()
{
    qDebug() << "MyButton调用析构了!";

}

mywidget.cpp

#include "mywidget.h"
#include<QPushButton>
#include "mybutton.h"
#include <QDebug>
//命名规范
//类名 首字母大写、单词与单词之间 首字母大写
//函数、变量名称首字母小写  单词与单词之间首字母大写

//帮助文档的查看方式
//第一种 f1查看
//第二种 左侧的按钮
//第三种 exe程序

//快捷键
//编译+运行 ctrl +r
//编译  ctrl+b
//帮助文档 f1
//字体大小 ctrl + 鼠标滚轮
//同名的.h 和.cpp之间的切换 F4
//注释 ctrl+ /
//查找关键字 ctrl +f
// ctrl + shift +↑ 或者↓


MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    QPushButton * btn =new QPushButton;

    // btn->show();
    //btn应该依赖于主窗口
    btn->setParent(this);
    //显示文字
    btn->setText("德玛");

    //第二种创建方式
    QPushButton * btn2 = new QPushButton("德玛西亚",this);
    //移动窗口
    btn2->move(100,100);
    //重置窗口大小
    resize(960,640);

    //btn可不可以 resize? 可以
    btn2->resize(50,50);

    //设置窗口标题名称
    this->setWindowTitle("德玛西亚万岁");

    //对象树
    MyButton * myBtn = new MyButton();
    myBtn->setParent(this);
    myBtn->move(200,200);
    myBtn->setText("我的按钮");

    //窗体的坐标系
    //左上角为 0 0 点
    // x 以右侧为正方向  y 以下侧为正方向

    //需求 点击“我的按钮” ,关闭窗口
    //连接信号槽的关键字 connect
    //4个参数 参数1 信号发送者   参数2  发送的信号   参数3  信号的接受者  参数4 处理的槽函数
    //参数2 和参数4 需要的都是函数地址

    connect(myBtn,&QPushButton::clicked,this,&MyWidget::close);

}

MyWidget::~MyWidget()
{
    qDebug("MyWidget析构了!");
}

一些常用控件的使用

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QLabel>
#include <QStatusBar>
#include <QDockWidget>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(600,400);

    // 包含菜单栏 只能有一个
    QMenuBar * bar =  menuBar();
    //将菜单栏放入到窗口中
    this->setMenuBar(bar);

    //创建文件菜单
    QMenu * fileMenu =  bar->addMenu("文件");
    QMenu * editMenu =  bar->addMenu("编辑");

    //添加菜单项
    QAction * newAction =  fileMenu->addAction("新建");
    // 添加分割线
    fileMenu->addSeparator();
    QAction * openAction =  fileMenu->addAction("打开");

    //工具栏  可以有多个
    QToolBar * toolBar = new QToolBar(this);
    addToolBar(Qt::LeftToolBarArea,toolBar); //默认停靠范围

    //只允许左右侧停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea );

    //设置浮动
    toolBar->setFloatable(false);

    //设置移动 (总开关)
    toolBar->setMovable(false);

    //工具栏添加菜单项
    toolBar->addAction(newAction);
    //添加分割线
    toolBar->addSeparator();
    toolBar->addAction(openAction);


    //状态栏 只能有一个
    QStatusBar * stBar = statusBar();
    setStatusBar(stBar);
    QLabel * label = new QLabel("提示信息",this);
    stBar->addWidget(label); //添加提示信息到左侧

    QLabel * label2 = new QLabel("右侧提示信息",this);
    stBar->addPermanentWidget(label2);


    //铆接部件 浮动窗口 可以有多个
    QDockWidget * dock = new QDockWidget;
    //添加铆接部件到 窗口中
    addDockWidget(Qt::BottomDockWidgetArea,dock);

    //设置停靠范围
    dock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);


    //核心部件 只能一个
    QTextEdit * edit = new QTextEdit; //文本编辑框
    setCentralWidget(edit);
}

MainWindow::~MainWindow()
{

}

main.cpp

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

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

    return a.exec();
}



版权声明:本文为m0_55645673原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。