Qt编程中常见类的基本使用及小问题的处理

244 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 @TOC

QPushButton(按钮)

在这里插入图片描述 在这里插入图片描述 widget.cpp

#include "widget.h"
//导入按钮模块
#include <QPushButton>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //设置主界面的固定长宽
    setFixedSize(200,200);
    //创建一个按钮
    QPushButton * btn=new QPushButton;
    //为按钮设置内容
    btn->setText("登录");
    //将按钮装入主界面中
    btn->setParent(this);
    //创建第二个按钮
    QPushButton * btn2=new QPushButton("退出",this);
    //移动按钮位置
    btn2->move(100,0);
    //给按钮添加功能
    //connect(信号的发送者,发送的信号(函数的地址),信号的接收者,处理的槽函数)
    connect(btn2,&QPushButton::clicked,this,&QWidget::close);

}

Widget::~Widget()
{
}


在这里插入图片描述

QMenuBar(菜单)

在这里插入图片描述 mainwindow.cpp

#include "mainwindow.h"
#include<QMenuBar>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    setFixedSize(600,400);
    //菜单栏创建
    QMenuBar *bar=menuBar();
    setMenuBar(bar);
    //创建菜单
    QMenu * fileMenu=bar->addMenu("文件");
    QMenu * editMenu=bar->addMenu("编辑");
    //创建菜单项
    fileMenu->addAction("新建");
    //添加分割线
    fileMenu->addSeparator();
    fileMenu->addAction("打开");
}

MainWindow::~MainWindow()
{
}

在这里插入图片描述

QToolBar(工具栏)

#include "mainwindow.h"
#include<QMenuBar>
#include<QToolBar>
#include<QPushButton>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    setFixedSize(600,400);
    //菜单栏创建
    QMenuBar *bar=menuBar();
    setMenuBar(bar);
    //创建菜单
    QMenu * fileMenu=bar->addMenu("文件");
    QMenu * editMenu=bar->addMenu("编辑");
    //创建菜单项
    QAction * newAction=fileMenu->addAction("新建");
    //添加分割线
    fileMenu->addSeparator();
    QAction * openAction=fileMenu->addAction("打开");
    //创建工具
    QToolBar * tool_bar=new  QToolBar(this);
    addToolBar(Qt::LeftToolBarArea,tool_bar);
    //设置停靠
    tool_bar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
    //设置浮动
    tool_bar->setFloatable(false);
    //设置移动
    tool_bar->setMovable(false);
    //工具栏中设置内容
    tool_bar->addAction(newAction);
    //添加分割线
    tool_bar->addSeparator();
    tool_bar->addAction(openAction);
    //添加控件
    QPushButton * btn=new QPushButton("我是按钮",this);
    tool_bar->addWidget(btn);

}

MainWindow::~MainWindow()
{
}

在这里插入图片描述

(QLabel)标签

#include "mainwindow.h"
#include<QLabel>
# include<QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    setFixedSize(600,400);
    QLabel * label=new QLabel("我是一个标签",this);
    //获取标签的内容
    qDebug()<<label->text();
    //设置标签的 内容
    label->setText("我真的是一个标签");
    }

MainWindow::~MainWindow()
{
}

在这里插入图片描述

QDockWidget (浮动窗口)

//创建浮动窗口
QDockWidget * dock=new QDockWidget("浮动",this);
//添加
addDockWidget(Qt::RightDockWidgetArea,dock);
//限制
dock->setAllowedAreas(Qt::RightDockWidgetArea |Qt::LeftDockWidgetArea);

在这里插入图片描述

QTextEdit (核心组件)

//设置中心组件,只能一个
QTextEdit * edit=new QTextEdit(this);
setCentralWidget(edit);

QDialog(模态框和非模态框)

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDialog>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{

    ui->setupUi(this);
    ui->actionNew->setIcon(QIcon(":/img/fruit.png"));
    connect(ui->actionNew,&QAction::triggered,[=](){
        QDialog dlg(this);
        dlg.resize(200,100);
        dlg.exec();
        //非模态框
        /*
        QDialog * dlg2=new QDialog(this);
        dlg2->resize(200,100);
        dlg2->setAttribute(Qt::WA_DeleteOnClose);//防止无限打开
        dlg2->show();
        */
    });

}

MainWindow::~MainWindow()
{
    delete ui;
}

在这里插入图片描述

QMessageBox(对话框)

critical(消息对话框)

//critical(父类,标题,提示内容,按键类型,默认关联)
QMessageBox::critical(this,"错误","点击错误!!");

information(信息对话框)

//information(父类,标题,提示内容,按键类型,默认关联)
QMessageBox::information(this,"xxx","xxxx");

question(提问对话框)

//question(父类,标题,提示内容,按键类型,默认关联)
QMessageBox::question(this,"xxx","xxx");

warning(警告对话框)

//warning(父类,标题,提示内容,按键类型,默认关联)
QMessageBox::warning(this,"warming","警告");

QFileDialog(文件对话框)

getOpenFileName(获取打开文件的路径)

//getOpenFileName(父类,标题,默认打开路径,过滤文件格式)
QString filename_path=QFileDialog::getOpenFileName(this,"打开文件","C:","(*.txt)");

QListWidget

节点(QListWidgetItem)

QListWidgetItem* item=new QListWidgetItem(QStringList)

QTreeWidget

节点(QTreeWidgetItem)

QTreeWidgetItem * item=new QTreeWidgetItem (QStringList)

设置水平头(setHeaderLabels)

ui->QTreeWidget(ui名)->setHeaderLabels(QStringList)

顶层头节点(addTopLevelItem)

ui->QTreeWidget(ui名)->addTopLevelItem(Item)

追加子节点(Item.addChild)

Item.addChild(item)

QTabelWidget

节点(QTreeWidgetItem)

QTableWidgetItem* item=new QTableWidgetItem(QStringList)

设置列数(setColumnCount)

ui->tableWidget->setColumnCount(3);

设置水平表头

ui->tableWidget->setHorizontalHeaderLabels(QStringList);

设置行数(setRowCount)

ui->tableWidget->setRowCount(3);

设置正文(setItem)

ui->tableWidget->setItem(row,col,QTableWidgetItem);

重载函数如何进行信号和槽

void(ClassName::*函数名)(参数)=&ClassName::重载函数的方法

QString去双引号

str.toUtf8().data()