QT学习

2011年5月17日14:36:09
void Widget::paintEvent(QPaintEvent *)
{
QPainter p(this); //
//QColor red(255,0,0,255);

//下面几行与上面注释的功能相同,也可以设置画笔颜色
QColor color;
color.setAlpha(255);
color.setGreen(255);
color.setRed(0);
color.setBlue(0);

Qpen pen;
pen.setColor(red);//设置笔的颜色
pen.setWidth(16); //线的宽度
pen.setStytle(Qt::DashLine);//线的类型,DashLine为虚线,windows鼠标选择时用到
pen.setCapStyle(Qt::RountCap);//设置线的端点为圆角
p.setPen(pen);

Qpoint pointA,pointB;//描述一个点
pointA.setX(20);
pointA.setY(20);
pointB.setX(20);
pointB.setY(100);

p.drwwLine(pointA,pointB);
}
QT绘图
1.重写paintEvent(QPaintEvent *),写成自己想要的
2.QPainter painter(this)//画图的函数,this表示往哪里画,当前变量
注意:a.画笔Qpen 1.颜色QColor(r,g,b,255)
2.

QRect描述一个区域的对象

用QRect画矩形
pen.setJoinStype(Qt::MiterJoin);//矩形脚的样式
QRect rect(pointA,pointB);//创建对象有两种方式
p.drwaRect(rect);//画矩形
p.drawEllipse(rect);//画圆p.drawEllipse(pointB,100,100);//通过圆心和半径画
p.drawRountRect(rect);//画圆角矩形

画刷
QBrush brush;
brush.setColor(red)//画刷颜色
brush.setStyle(Qt::linearGradientPattern);//渐变画刷

画圆的时候填充后会有锯齿,需要用一种颜色过渡可以实现抗锯齿
p.setRenderHint(QPaint::Antialiasing,true);//抗锯齿实现,屏幕分辨率低了可以用


实现查看设定路径下的文件和文件夹
ui设定界面,listEdit listWidget

dialog.cpp

QString root = "/";//用来保存根路径
QDir rootDir(root);//用来构造文件夹目录
rootDir.下有n多方法
QStringList是一个list类型
QStringList stringList;
stringList << "*";//*号为目录下的所有文件,通配符
QFileInfo//包含文件信息
QFileInfoList fileInfoList = rootDir.entryInfoList(stringList);//穿件文件列表对象
showFIleInfo(fileInfoList);
//ui->listWidget->clear();//清空list
ui->lineEdit->setText(root);


void Diaglog::showFIeInfo(QListWidgetItem fileInfoList)
{
ui->listWidget->clear();

for (int i = 0;i < fileInfoList.count;++i )
{
QFileInfo fileInfo = fileInfoList.at(i)//拿出里边的每一个元素
if(fileInfo.isDir()) //判断如果是文件夹
{
QIcon icon(":/images/dir.png");//新建图标对象
QString fileName = fileInfo.fileName();//取出文件名
QListWidgetItem *item = new QListWidgetItem(icon,fileName); //放到list里边
ui->listWidget->addItem(item); //添加到list里边
}
else if(fileInfo.isFile())
{
QIcon icon(":/images/file.png");
QString fileName = fileInfo.fileName();//去文件名
QListWidgetItem *item = new QListWidgetItem(icon,fileName);
ui->listWidget->addItem(item);
}
}
}
在工程中添加图片后续要到对应的.h文件中(dialg.h)添加Q_INIT_RESOURCE(FileItem);期中FileItem是所建立的资源的名字

void Dialog::on_listWidget_itemDoubleClicked()
{
QString fileName = item->text();
QDir dir;
dir.setPath(ui->lineEdit->text());//从lineEdit中获取路径
dir.cd(fileName);//进入目录
ui->lineEdit->setText(dir.adsolutePath());//显示路径

QStringList stringList;
stringList << "*";
QFileInfoList fileInfoList = dir.entryInfoList(stringList,QDir::AllEntries,QDir::DirFist);
shouFileInfoList(fileInfoList);
}

void Dialog::on_lineEdit_returnPressed()
{
QStringList stringList;
stringList <<"*";
QDir dir(ui->lineEdit->text());
QFileINfoList = dir.entryInfoList(stringList,QDir::AllEntriies,QDir::Dirfist);
showFileInfo(fileInfoList);
}

void Dialog::on_listWidget_itemClicked(QlistWidgetItem *item)
{
QString fileName ;
QFileInfo fileinfo;
if(ui->lineEdit->text() != "/")
{
fileInfo.setFile(ui->lineEdit->text() + "/" + item->text());//获取当前选中的文件

}
else
{
fileInfo.setFile("/"+ item->text());
}
QFileInfo fileInfo(fileName);//获取文件信息
QDateTime created = fileInfo.created(); //获取文件创建时的时间
QDataTime lastModified = fileInfo.lastModified(); //上次修改时间
QdataTime lastRead = fileInfo.lastRead();//上次访问时间



//FILETIME 1601年1月1日到现在的毫秒数
//SYSTEMTIME 是一个结构体,里边包括年月日时分秒,要显示时间是续将FILETIME获取的时间转换过来

//显示时间
ui->label->setText(created>toString);//直接将时间传进来再转换为字符串
ui->label_2->setText(lastModified.toString);
ui->label_3->setText(lastRead.toString);

//显示被选中的文件大小

qint64 size = fileInfo.size();//返回文件大小
ui->label_4->setText(QString::number(size));//将数字转换为字符并显示
ui->checkBox->setCheckState(fileInfo.isSymLink() ? Qt::checked : Unchecked);
ui->checkBox_2->setCheckState(fileInfo.isHidden()? Qt::checked : Unchecked);
ui->checkBox_3->setCheckState(fileInfo.isReadable() ? Qt::checked : Unchecked);
ui->checkBox_4->setCheckState(fileInfo.isWriteable() ? Qt::checked : Unchecked);
ui->checkBox_5->setCheckState(fileInfo.isExecutable() ? Qt::checked : Unchecked);
}



2011年5月18日10:19:56

创建对话框

打开文件对话框会返回一个路径,用QFile
通过pushButton打开对话框

打开文件对话框
void Dialog::on_pushButton_clicked()
{
QString fileName = QFileDialog::getOPenFileName(this,"OPen File Dialog","/","Text File (*.txt);;All File(*.*)");//参数一表示是由谁打开的,参数二为打开后对话框的标题,参数三为打开的路径,参数四位打开的文件类型(*.txt)为只显示.txt文件,All File(*.*)为所有文件
//此对话框是由系统调用实现,不同平台有不同系统调用

ui->label->setText(fileName);
}

保存对话框

void Dialog::on_pushButton_2_clicked()
{
QString fileName = QFileDialog::getSaveFileName(this,
"Save File Name",
"/",
"Text File(*.txt);;All File(*.*)");
ui->label->setText(fileName);
}

颜色对话框用frame
void Dialog::on_pushButton_3_clicked()
{
QColor color = QColorDiag::getColor(Qt::green);//QT::green为设置的颜色,如果不写默认为白色
ui->frame->setFrameShape(QFrame::Box);//设置Frame的形状
ui->frame->setAutoFIllBackground(true);//自动填充背景
ui->frame->setPalette(QPalette(color));//把颜色放到frame中
}

对话框


字体对话框用LineEdit
void Dialog::on_pushButton_2_clicked()
{
ui->lineEdit->setText("hello QT!");
bool b;//用来保存返回状态
QFont font = QFontDialog::getFont(&b);打开字体对话框
if(b)
{
ui->lineEdit->setFont(font);//设置字体
}
}


//获取字符串对话框
void Dialog::on_pushButton_2_clicked()
{
bool b;
QString string = QInputDialog::getText(this,//由谁打开的
"String input dialog",//打开对话框标题
"please input a string",
QLineEdit::Normal,
“String”,&b);//获得的字符串,b为是否成功状态
ui->label->setText(string);

}

用InputDialog获取Int值
void Dialog::on_pushButton_2_clicked()
{
bool b;
int i = QIntputDialog::getInteger(this,
"title",
"Please input a integer",
10,//lineEdit中默认的值
0,//最小值
100,//最大值
1,
&b);//返回状态
ui->label->setText(QString::number(i));//显示在label上
}

利用InputDialog获取String
void Dialog::on_pushButton_2_clicked()
{
bool b;
QStringList stringlist;
//stringList << "AA" << "BB";
stringList.append(stringA);//这种方法也可以给stringList中加值
stringList.append(stringB);//可在循环中用

QString string = QInputDialog::getItem(this,
"title",
"AA or BB",//下拉列表的选项
stringList,
0,//默认第几项
false,//是否可编辑
&b);
ui->label->setText(string);
}

加双精度的值和Int的类似
void Dialog::on_pushButton_2_clicked()
{
bool b;
double d = QInputDialog::getDouble(this,
"title",
"string",
1.5,//默认的值
-100.23,//最小值
234.32,//最大值
1,//精度
&b);
ui->label->setText(QString::number(d));
}



转载于:https://www.cnblogs.com/zheguzai/archive/2011/05/29/2061927.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值