樹控件
//設置水平頭部
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());
});
```