树控件
//设置水平头部
ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");
QTreeWidgetItem * item1 = new QTreeWidgetItem(QStringList()<<"力量");
QTreeWidgetItem * item2 = new QTreeWidgetItem(QStringList()<<"敏捷");
QTreeWidgetItem * item3 = new QTreeWidgetItem(QStringList()<<"智力");
ui->treeWidget->addTopLevelItem(item1);
ui->treeWidget->addTopLevelItem(item2);
ui->treeWidget->addTopLevelItem(item3);
QTreeWidgetItem * ll = new QTreeWidgetItem(QStringList()<<"斧王"<<"前排坦克,能承受伤害");
item1->addChild(ll);
列表控件
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->tableWidget->setColumnCount(3);
ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
ui->tableWidget->setRowCount(5);
ui->tableWidget->setItem(0,0,new QTableWidgetItem("Asia"));
}
MainWindow::~MainWindow()
{
delete ui;
}
鼠标事件
进入离开事件
鼠标事件的添加:
创建一个新的类,这个类仅仅用于控件和事件的关联,所以用普通类即可
#ifndef MYLABEL_H
#define MYLABEL_H
#include <QLabel>
class myLabel : public QLabel
{
Q_OBJECT
public:
explicit myLabel(QWidget *parent = nullptr);
void enterEvent(QEvent *event);
void leaveEvent(QEvent *event);
signals:
};
#endif // MYLABEL_H
#include "mylabel.h"
#include<QDebug>
#include <iostream>
myLabel::myLabel(QWidget *parent) : QLabel(parent)
{
}
void myLabel::enterEvent(QEvent *event){
qDebug()<<"mouse coming in";
}
void myLabel::leaveEvent(QEvent *event){
qDebug()<<"mouse coming out";
}
在窗口中提升控件即可将事件和控件关联
按下释放事件
mousePressEvent();
mouseReleaseEvent();
mouseMoveEvent();
判断左右按键
ev->buttons()用&操作符
链式格式化字符串添加
QString str = QString("鼠标按下了 x= %1 y = %2").arg(ev->x()).arg(ev->y());
出现“常量中有换行符”时的解决办法
改变编码方式
定时器
利用事件 timerEvent(QTimerEvent * ev);
启动定时器startTimer(1000)
timerEvent的返回值是定时器的唯一标识,可以与timerId作比较。
event 事件分发器
event 事件
5.1用途:用于事件的分发。
5.2也可以做拦载操作,不建议5.3 bool event(QEvent*;
5.4返回值如果是true代表用户处理这个事件,不向下分发了
5.5使用type()方法可以得到各种枚举值
eventfilter事件过滤器
事件过滤器
6.1
在程序将时间分发到事件分发器前,可以利用过滤器做拦载
6.2
步骤
6.2.1 1、给控件安装事件过滤器
6.2.2 2、重写eventFilter函数(obj,ev)
文件读取
//点击选取文件的按钮
connect(ui->pushButton,&QPushButton::clicked,[=](){
QString path = QFileDialog::getOpenFileName(this,"打开文件","路径");
//将路径放入lineEdit中
ui->lineEdit->setText(path);
//读取内容放入textEdit中
QFile file(path);//参数就是读取文件的路径
//设置打开方式
file.open(QIODevice::ReadOnly);
//qtEXTcodec * codec = QTextCode::codecFroName("gbk");
ui->textEdit->setText(file.readAll());
});
```