C++ Qt笔记(较详细需要配合目录查看)

目录

  • Qt基本内容
      • 设置窗口相关
      • 按钮 QPshuButton
      • connect 连接信号
      • disconnect 断开信号
      • 自定义信号
      • 自定义槽
  • 主窗口及相关控件
      • QMineWindow 主窗口
      • QMenuBar 菜单栏
      • QToolBar 工具栏
      • QStatusBar 状态栏
      • QDockWidget 铆接部件(浮动窗口)
      • 中心部件(待补全)
  • 设计界面
      • 新建及打开设计界面操作
      • 设计界面简介
      • 控件简介(待补全)
        • Layouts 布局控件
        • Spacers 间隔控件
        • Buttons 按钮控件
        • Item Views 单元视图
        • Item Widgets 单元控件
        • Containers 容器
        • Input Widgets 输入控件
        • Display Widgets 显示控件
  • 资源文件
      • Qt Resource File 资源文件
  • 对话框
      • QDialog 对话框
      • QMessageBox 消息对话框
      • 其他标准对话框
            • 颜色选择,文件选择,字体选择,数值, 进度条

Qt基本内容

设置窗口相关

重置窗口大小 resize(int,int)
设置固定窗口大小 setFixedSize(int,int)
设置窗口标题 setWindowTitle

按钮 QPshuButton

创建 QPushButton btn=new QPushButton;
设置当前窗口为父亲 setParent(this)
重置按钮大小 resize(int ,int)
设置按钮位置 move(int ,int)
设置文本 setText(string)

connect 连接信号

Qt5版本写法:
connect(信号发送者,发送的信息(信号函数),信号接收者,信号处理函数(槽))
例:

QPushButton pushButton=new QPushButton;
//关闭当前窗口
connect(pushButton,&QPushButton::clicked,this,&QWigdet::close());

Qt4版本写法(不会对类型进行检测):
connect(信号发送者,SIGNAL(信号函数),信号接收者,SLOT(槽));
例:

QpushButton pushButton=new QPushButton;
connect(pushButton,SIGNAL(QPushButton::click(bool)),this,SLOT(QWidget::close()));

信号可以连接信号
一个信号可以连接多个槽
多个信号可以连接桶一个槽
信号函数和槽函数参类型徐一一对应
信号参数个数可以多于槽函数

disconnect 断开信号

disconnect(信号发送者,发送的信息(行为函数),信号接收者,信号处理函数(槽))
写法类似connect

自定义信号

  1. 写到signals下
  2. 返回值为void
  3. 只需要声明 不需要实现
  4. 可以 有参 和 重载(若出现重载需要用函数指针调用)

自定义槽

  1. 一般N写到public sloats下
  2. 需要声明且需要实现
  3. 可以 有参 和 重载(若出现重载需要用函数指针调用)

主窗口及相关控件

QMineWindow 主窗口

C++ Qt笔记(较详细需要配合目录查看)_第1张图片

QMenuBar 菜单栏

  1. 头文件QMenuBar
  2. 菜单栏最多只能有一个
  3. 创建菜单栏
    例:
	//创建菜单栏(菜单栏默认属于tihs)
	QMenuBar *bar = menuBar();
	//将菜单栏放置到窗口中
	setMenuBar(bar);
	//因此时菜单中并没有菜单故不会显示
  1. 创建菜单
    例:
	//返回值为QMenu*
	QMenu *fileMenu = bar->addMenu("文件");
  1. 创建菜单项
    创建菜单项addAction
    创建分隔符addSeparator
    例:
	fileMenu->addAction("新建");
	fileMenu->addSeparator();

QToolBar 工具栏

  1. 头文件QtoolBar
  2. 工具栏可以有多个
  3. 创建工具栏
  4. 将工具栏显示在窗口中addToolBar
    例:
QToolBar *toolBar = new QToolBar(this);
//将工具栏显示在窗口中(第一个参数为位置,第二个为放置的工具栏)
addToolBar(QT::leftToolBarArea,toolBar);
  1. 设置停靠区域setAllowedAreas()
  2. 设置浮动setFloatable(bool)
  3. 设置移动(总开关) setMovable(bool)
  4. 添加菜单项addAction(QAction)
  5. 添加分割线addSeparator()
    10.添加控件addWidget()
    例:
//设置仅可左右停靠,位置为枚举值
toolBar->setAllowedAreas(LeftToolBarArea | RightToolBarArea);
//设置浮动,ture为可浮动,false为不可浮动,默认值为true
toolBar->setFloatable(false);
//设置移动,true为可移动,false为不可移动,默认值为false
toolBar->setMovable(false);
//添加菜单项
toolBar->addAction(fileAction);
//添加分割线
toolBar->addSeparator();
//添加控件(pushButton为一个按钮)
toolBar->addWidget(pushButton);

位置枚举值:

枚举值 对应数值 放置位置
Qt::LeftToolBarArea 0x01
Qt::RightToolBarArea 0x02
Qt::TopToolBarArea 0x04
Qt::BottomToolBarArea 0x08
Qt::AllToolBarArea 0x0f 所有位置
Qt::NoToolBarArea 0 不可移动

QStatusBar 状态栏

  1. 头文件QStatusBar
  2. 状态栏只能有一个
  3. 创建状态栏
  4. 设置到窗口中setStatusBar(QStatusBar);
  5. 放置标签到左侧addWidgit(QWidget,int);(参数一为标签,参数二为拉长大小)
  6. 放置标签到右侧addPermanentWidget(QWidget,int);
    例:
QStatusBar *stBar=statusBar();
//设置到窗口中
setStatusBar(stBar);
//QLable标签类型
QLabel *lab=new QLabel("信息",this);
QLabel *lab2=new QLabel("信息2",this);
//放置标签
stBar->addWidget(lab);
stBar->addWidget(lab2,20);

QDockWidget 铆接部件(浮动窗口)

  1. 头文件QDockWidget
  2. 浮动窗口可以有多个
  3. 创建浮动窗口
  4. 设置到窗口中addDockWidget(Qt::BottomDockWidgetArea,dock);(参数一为区域,参数二为名字)
  5. 设置停靠区域setAllowedAreas
	//浮动窗口
   QDockWidget *dock =new QDockWidget("浮动",this);
   addDockWidget(Qt::BottomDockWidgetArea,dock);
   //设置左右停靠
   setAllowedAreas(LeftDuckWidgetArea|RightDuckWidgetArea);

位置枚举值:

枚举值 对应数值 放置位置
Qt::LeftDuckWidgetArea 0x01
Qt::RightDuckWidgetArea 0x02
Qt::TopDuckWidgetrArea 0x04
Qt::BottomToolBarArea 0x08
Qt::AllDuckWidgetArea 0x0f 所有位置
Qt::NoDuckWidgetArea 0 不可移动

中心部件(待补全)

  1. 设置中心部件setCentralWidget(QWidget);
	//QTextEdit文本控件
   QTextEdit *edit=new QTextEdit(this);
    setCentralWidget(edit);

设计界面

新建及打开设计界面操作

  1. 新建项目 时在 details界面 勾选“创建界面”
  2. 项目中 在Forms 双击.ui文件 打开 设计界面
    C++ Qt笔记(较详细需要配合目录查看)_第2张图片

设计界面简介

  1. 设计界面可以实现简单的按钮拖拽操作
  2. 具体操作请看下图:
    C++ Qt笔记(较详细需要配合目录查看)_第3张图片

控件简介(待补全)

Layouts 布局控件

Spacers 间隔控件

Buttons 按钮控件

名称 中文名 作用 展示
PushButon 普通按钮 常见按钮工具 在这里插入图片描述
ToolButton 工具按钮 多用于图标展示 在这里插入图片描述
RadioButton 单选按钮 通常配合GroupBox使用,表示多选一 在这里插入图片描述
CheckBox 多选按钮 通常配合GroupBox使用,表示多选多
返回值:
0未选 1半选 2选中
C++ Qt笔记(较详细需要配合目录查看)_第4张图片
CommandLinkButton 命令链接按钮 支持两行文字,功能类似PushBUtton 在这里插入图片描述
DialogButtonBox 按钮对 由两个PushButton构成 在这里插入图片描述

Item Views 单元视图

Item Widgets 单元控件

Containers 容器

Input Widgets 输入控件

Display Widgets 显示控件

资源文件

Qt Resource File 资源文件

  1. 需要新建资源文件,新建时选择Qt->Qt Resource File(需要新建到相应项目文件夹下)
  2. 扩展名为.qrc
  3. Open in Editor以编辑模式打开资源文件
  4. 添加文件前需要将文件复制到对于项目目录下
  5. 使用资源文件中的文件": 前缀名 文件名"
    例:
//设置action图标为资源中的的图片
ui->actionNew->setIcon(QIcon(":/new/abc.ico"));

对话框

QDialog 对话框

  1. 头文件QDialog
  2. 对话框类型:
    模态对话框:不可以对其他窗口进行操作
    非模态对话框:可以对其他窗口进行操作
  3. 设置对话框标题 setWindowTitle()
  4. 显示show()
  5. 设置窗口模态setWindowModality()
  6. 设置属性setAttribute(Qt::WA_DeleteOnClose)
  7. 阻塞exec()
窗口模态 作用
Qt:NonModal 非模态,可以和程序的其他窗口进行交互
Qt:WindowModal 将阻止和对话框的父窗口进行交互
Qt:ApplicationModal 应用程序模态,阻止和任何其他窗口进行交互

例:

	//槽函数触发对象actionNew,新建一个名为“提示”的对话框
    connect(ui->actionNew,&QAction::triggered,[=](){
        QDialog *dlg=new QDialog(this);
        dlg->setWindowTitle("提示");
        dlg->resize(200,200);
        //设置为应用程序模态
        dlg->setWindowModality(Qt::ApplicationModal);
        //设置属性为按下关闭后析构
        dlg->setAttribute(Qt::WA_DeleteOnClose);
        dlg->show();
        qDebug()<<"rua";
    });

QMessageBox 消息对话框

1.头文件QMessageBox
2.种类及用法:

种类 用途 用法
critical 错误对话框 QMessageBox::critical(this,“标题”,“文本”);
question 提问对话框 QMessageBox::question(this,“标题”,“文本”,按钮值1|按钮值2,默认停靠按钮);
warning 警告对话框 QMessageBox::warning(this,“标题”,“内容”,“按键文字”);
information 提示对话框 QMessageBox::information(this,“标题”,“内容”,“按键文字”);

例:

        QMessageBox::critical(this,"错误","未知错误");
        if(!QMessageBox::question(this,"提问","先有的鸡还是先有的蛋","鸡","蛋","不晓得"))
             qDebug()<<"鸡";
        else
            qDebug()<<"蛋";
        //返回值可以理解为一个整数
        qDebug()<<QMessageBox::question(this,"提问","先有的鸡还是先有的蛋","鸡","蛋","不晓得");
        QMessageBox::information(this,"标题","内容","按键文字");
        QMessageBox::warning(this,"一个提示","获得了一筐鸡蛋","要得");

其他标准对话框

颜色选择,文件选择,字体选择,数值, 进度条
名称 所属类 用法 样式
颜色选择对话框 QColorDialog static QColor QColorDialog::getColor
(const QColor &initial = Qt::white,
QWidget *parent =Q_NULLPTR,
const QString &title = QString(),
ColorDialogOptions options = ColorDialogOptions());
C++ Qt笔记(较详细需要配合目录查看)_第5张图片
文件选择对话框 QFileDialog static QString ** QFileDialog::getOpenFileName**(QWidget *parent = Q_NULLPTR,
const QString &caption = QString(),
const QString &dir = QString(),
const QString &filter = QString(),
QString **selectedFilter = Q_NULLPTR,
Options options = Options());
C++ Qt笔记(较详细需要配合目录查看)_第6张图片
字体选择对话框 QFontDialog static QFont QFontDialog::getFont
(bool *ok,
const QFont &initial,
QWidget *parent = Q_NULLPTR,
const QString &title = QString(),
FontDialogOptions options = FontDialogOptions());
C++ Qt笔记(较详细需要配合目录查看)_第7张图片
输入对话框 QInputDialog static QString QInputDialog::getText
(QWidget *parent,
const QString &title,
const QString &label,
QLineEdit::EchoMode echo = QLineEdit::Normal,
const QString &text = QString(), bool *ok = Q_NULLPTR,
Qt::WindowFlags flags = Qt::WindowFlags(),
Qt::InputMethodHints inputMethodHints = Qt::ImhNone);
C++ Qt笔记(较详细需要配合目录查看)_第8张图片
进度条 QProgressDialog

未完待续(不定期更新)

你可能感兴趣的:(C++ Qt笔记(较详细需要配合目录查看))