第一个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 版权协议,转载请附上原文出处链接和本声明。