1、文件后缀
.h .cpp
.lib 静态库
.dll 动态库
2、Qt Creator
slot 槽函数
signal 信号
加关联
connect(ui->actionPast,SIGNAL(),this,SLOT());
打开、保存文件
头文件
#include <QFileDialog>
#include <QFile>
#include <QTextStream>
// 打开文件
void MainWindow::on_actionOpen_triggered()
{
// 获取文件路径
QString filePath = QFileDialog::getOpenFileName(this,"选择打开文件");
if(filePath.isEmpty()) return;
QFile myfile(filePath);
if(!myfile.open(QFile::ReadWrite)){
myfile.close();
}
QTextStream in(&myfile);
ui->myText->append(in.readAll());
myfile.close();
}
// 保存文件
void MainWindow::on_actionSave_triggered()
{
QString filePath = QFileDialog::getSaveFileName(this,"选择保存文件");
if(filePath.isEmpty()) return;
QFile myfile(filePath);
if(!myfile.open(QFile::ReadWrite)){
myfile.close();
}
QTextStream out(&myfile);
// 纯文本
// out<<ui->myText->toPlainText();
// html
out<<ui->myText->toHtml();
myfile.close();
}
颜色、字体、打印
头文件
#include <QFont>
#include <QFontDialog>
#include <QColor>
#include <QColorDialog>
#include <QPrinter>
#include <QPrintDialog>
#include <QPrintPreviewDialog>
print 需要自己加模型 (=>printsupport),Qt 默认没有加
QT += core gui printsupport
print 需要添加槽函数
private slots:
void printPreview(QPrinter *printer);
void MainWindow::on_actionNew_triggered()
{
}
void MainWindow::on_actionCopy_triggered()
{
ui->myText->copy();
emit mysig();
}
void MainWindow::on_actionCut_triggered()
{
ui->myText->cut();
}
void MainWindow::mypaste()
{
ui->myText->paste();
}
// 字体
void MainWindow::on_actionFont_triggered()
{
bool ok = true;
QFont ft = QFontDialog::getFont(&ok,font(),this,"选择字体");
ui->myText->setFont(ft);
}
// 颜色
void MainWindow::on_actionColor_triggered()
{
QColor col = QColorDialog::getColor(Qt::white,this,"选择颜色");
ui->myText->setTextColor(col);
}
// 打印
void MainWindow::on_actionPrint_triggered()
{
QPrinter printer(QPrinter::HighResolution);
QPrintPreviewDialog preview(&printer,this);
connect(&preview,SIGNAL(paintRequested(QPrinter*)),this,SLOT(printPreview(QPrinter*)) );
preview.exec();
}
void MainWindow::printPreview(QPrinter *printer)
{
ui->myText->print(printer);
}
重构菜单(右键)
头文件
#include <QMenu>
#include <QContextMenuEvent>
#include <QAction>
添加槽函数
private slots:
void contextMenuEvent(QContextMenuEvent *e);
void t_newWin();
void MainWindow::contextMenuEvent(QContextMenuEvent *e)
{
QMenu *tmenu = new QMenu(this);
tmenu->addAction(ui->actionFont);
tmenu->addAction(ui->actionColor);
tmenu->addAction(ui->actionPrint);
// 自定义功能
QAction *newWin = new QAction("新窗口",this);
connect(newWin,SIGNAL(triggered()),this,SLOT(t_newWin()));
tmenu->addAction(newWin);
tmenu->exec(e->globalPos());
}
// 自定义功能
void MainWindow::t_newWin()
{
qDebug()<<"new win triggered";
}
操作标签
向标签里贴图片
头文件
#include <QFile>
#include <QFileDialog>
#include <QImage>
#include <QPixmap>
void myForm::readimg()
{
QString imgpath = QFileDialog::getOpenFileName(this,"选择图片");
if(imgpath.isEmpty()) return;
QImage img(imgpath);
QRect rect = ui->labimg->rect();
QImage img1 = img.scaled(rect.width(),rect.height(),Qt::IgnoreAspectRatio);
QPixmap pmap = QPixmap::fromImage(img1);
ui->labimg->setPixmap(pmap);
}
改变标签背景色
void myForm::on_bnt_color_clicked()
{
ui->labelR->setStyleSheet("background-color:red");
ui->labelG->setStyleSheet("background-color:green");
ui->labelB->setStyleSheet("background-color:blue");
}
操作表格
插入表头
void myForm::on_btn_confTab_clicked()
{
QStringList header;
header << "姓名" << "年龄" << "性别" << "成绩";
ui->myTable->setColumnCount(header.length());
ui->myTable->setHorizontalHeaderLabels(header);
}
插入行
void myForm::on_btn_insertTab_clicked()
{
int rows = ui->myTable->rowCount();
ui->myTable->insertRow(rows);
// ui->myTable->setItem(rows,0,new QTableWidgetItem("Bob"));
// ui->myTable->setItem(rows,1,new QTableWidgetItem("20"));
// ui->myTable->setItem(rows,2,new QTableWidgetItem("man"));
// ui->myTable->setItem(rows,3,new QTableWidgetItem("80"));
QTableWidgetItem *t = new QTableWidgetItem("Bob");
t->setBackgroundColor(QColor(111,154,159));
t->setTextColor(Qt::blue);
ui->myTable->setItem(rows,0,t);
}
删除行
void myForm::on_btn_deleteTab_clicked()
{
int curRow = ui->myTable->currentRow();
ui->myTable->removeRow(curRow);
}
读表格
头文件
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QDebug>
修改 insertTab 函数 , 防止读表格时报错
void myForm::on_btn_insertTab_clicked()
{
int rows = ui->myTable->rowCount();
ui->myTable->insertRow(rows);
int cols = ui->myTable->colorCount();
for(int j = 0; j < cols; j++)
{
ui->myTable->setItem(rows, j, new QTableWidgetItem(""));
}
// ui->myTable->setItem(rows,0,new QTableWidgetItem("Bob"));
// ui->myTable->setItem(rows,1,new QTableWidgetItem("20"));
// ui->myTable->setItem(rows,2,new QTableWidgetItem("man"));
// ui->myTable->setItem(rows,3,new QTableWidgetItem("80"));
// QTableWidgetItem *t = new QTableWidgetItem("Bob");
// t->setBackgroundColor(QColor(111,154,159));
// t->setTextColor(Qt::blue);
// ui->myTable->setItem(rows,0,t);
}
void myForm::on_btn_readTab_clicked()
{
int rows = ui->myTable->rowCount();
int cols = ui->myTable->columnCount();
for(int i = 0; i < rows; i++)
{
QString ss = "";
for(int j = 0; j < cols; j++)
{
ss += ui->myTable->item(i,j)->text();
ss += " | ";
}
qDebug()<<ss;
}
}
读写二进制文件
头文件
#include <QWidget>
#include <QFile>
#include <QFileDialog>
#include <QImage>
#include <QPixmap>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QDebug>
#include <QDataStream>
#include <QMap>
写文件
void myForm::writeData()
{
QString datpath = "d:/test.dat";
QFile dfile(datpath);
if (!dfile.open(QIODevice::WriteOnly))
return;
QDataStream out(&dfile);
out.setVersion(QDataStream::Qt_5_6);
QTableWidgetItem *it = new QTableWidgetItem("dog");
it->setBackgroundColor(QColor(0,100,100));
it->setTextColor(QColor(200,111,100));
it->setFont(QFont("Helvetica"));
QImage img("d:/Koala.jpg");
out << *it << img << map;
dfile.close();
}
读文件
void myForm::readData()
{
QString datpath = "d:/test.dat";
QFile dfile(datpath);
if(!dfile.open(QIODevice::ReadOnly))
return;
QDataStream in(&dfile);
in.setVersion(QDataStream::Qt_5_6);
int rows=ui->myTable->rowCount();// rows=3 0 1 2
ui->myTable->insertRow(rows);//rows,0--3
QTableWidgetItem *it = new QTableWidgetItem();
QImage img;
QMap<QString,QString> map1;
in >> *it >> img >> map1;
ui->myTable->setItem(0,0,it);
QRect rect=ui->labimg->rect();
QImage img1=img.scaled(rect.width(),rect.height(),Qt::IgnoreAspectRatio);
QPixmap pmap=QPixmap::fromImage(img1);
ui->labimg->setPixmap(pmap);
ui->labR->setStyleSheet(map1["red"]);
ui->labG->setStyleSheet(map1["green"]);
ui->labB->setStyleSheet(map1["blue"]);
dfile.close();
}
读配置文件
配置文件
[table]
rows=1
cols=4
head="姓名,年龄,性别,成绩"
[color]
imgR=red
imgG=green
imgB=blue
[image]
path="d:/koala.jpg"
[content]
cont1="张三,18,男,80"
void myForm::readIni()
{
QString filepath = "d:/config.ini";
QSettings *configR = new QSettings(filepath, QSettings::IniFormat);
configR->setIniCodec("gb2312");
QString val;
val = configR->value("/image/path").toString();
QImage img(val);
QRect rect=ui->labimg->rect();
QImage img1=img.scaled(rect.width(),rect.height(),Qt::IgnoreAspectRatio);
QPixmap pmap=QPixmap::fromImage(img1);
ui->labimg->setPixmap(pmap);
val = configR->value("/color/imgR").toString();
ui->labR->setStyleSheet(map.value(val));
val = configR->value("/color/imgG").toString();
ui->labG->setStyleSheet(map.value(val));
val = configR->value("/color/imgB").toString();
ui->labB->setStyleSheet(map.value(val));
int rows = configR->value("/table/rows").toInt();
int cols = configR->value("/table/cols").toInt();
QStringList head = configR->value("/table/head").toString().split(",");
ui->myTable->setColumnCount(cols);
ui->myTable->setHorizontalHeaderLabels(head);
for(int i=0;i<rows;i++)
{
ui->myTable->insertRow(i);
}
// QString s1="/content/cont";
// for(int i=1;i<5;i++)
// {
// QString s2=s1+QString::number(i);
// }
QStringList cont = configR->value("/content/cont1").toString().split(",");
for(int i=0;i<cols;i++)
{
ui->myTable->setItem(rows-1,i,new QTableWidgetItem(cont[i]));
}
delete configR;
}
构建中。。。