1)Ctrl+N新建空项目
2),双击.pro文件,添加下面的代码:
QT += widgets//引用了widget窗口类
RC_ICONS = heart.ico//创建了应用程序图标
3)制作一个应用程序图标,可以在阿里矢量库搜索下载:https://www.iconfont.cn/,存放在项目文件中。
1)选择项目,右击添加新文件,add new …–>C+±->C++ -->Class–>Choose。
1)选择项目,右击添加新文件,add new …–>C+±->C++ Source Flie–>Choose
可以在阿里矢量库搜索下载:https://www.iconfont.cn/
1)回到文件栏目,右击项目添加新文件,选择Qt–Qt Resource File,确定。
2)回到项目中,打开资源文件.qrc,添加前缀,也可删去,再点击添加文件,全选,打开,确定。完成后Ctrl+S保存该文档。
1)打开mainwindow.h文件,输入下面的代码,定义菜单、工具、文本编辑器:
2)打开mainwindow.cpp文件,构造变量:
输入下面的代码
输入:
public slots:
void opneFile();
<1>选中openFile点击右键,重构refactor->在mainwindow.cpp中添加定义,回车,或者Alt+Enter->在mainwindow.cpp中添加定义,回车。
<2>在mainwindow.cpp中,添加头文件:
#include
#include
#include
#include
<3>同文件内,设计openFile的槽函数:
void mainwindow::openFile() //打开文件的槽函数
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"/app", tr("Text Files (*.*)")); //打开*.*所有类型的文本文件
qDebug() << fileName; //获取文件路径
if (!fileName.isEmpty()){
QFile file(fileName); //不为空,创建文件对象
if (!file.open(QFile::ReadOnly | QFile::Text)){
QMessageBox::warning(this, tr("Warning!!!"), tr("can't read file %1: \n %2.")
.arg(fileName).arg(file.errorString())); //无法读取文件提示
}else {
QTextStream in(&file); //打开成功,创建文本流
textEdit->setText(in.readAll()); //读取所有文件内容到in,并显示在文本编辑器中
setWindowTitle(fileName); //设置标题为文件名
}
}
}
<3>同文件内,mianwindow主程序中,关联openFile信号和槽函数
//关联openFile信号和槽
connect(action_O, &QAction::triggered, this, &mainwindow::openFile); //动作、触发、当前主窗口,槽函数
<4>Ctrl+R,运行效果如下:
<5>同文件内,mianwindow主程序中,关联close信号和槽函数
//关联退出动作信号和槽
connect(action_Q, &QAction::triggered, this, &mainwindow::close);
动作分别为拖入、放下
1)在mainwindow.h中申明这两个函数:
protected :
void dragEnterEvent(QDragEnterEvent *event);
void jdropEvent(QDropEvent *event);
#include
#include
#include
#include
3)在mianwindow.cpp中添加拖放事件的定义
void mainwindow::dragEnterEvent(QDragEnterEvent *event) //拖入事件
{
if (event->mimeData()->hasUrls()) //检查拖放是否存在路径
event->accept();
else{
event->ignore();
}
}
void mainwindow::jdropEvent(QDropEvent *event) //放下事件
{
const QMimeData *mimeData = event->mimeData(); //获取事件内容
if(mimeData->hasUrls()) {
QList<QUrl> urlList = mimeData->urls();
QString fileName = urlList.at(0).toLocalFile(); //读取第一个地址
if (!fileName.isEmpty()) { //打开文件
QFile file(fileName);
if(!file.open(QFile::ReadOnly | QFile::Text)) {
QMessageBox::warning(this, tr("Warning!!!"), tr("can't read file %1: \n %2.")
.arg(fileName).arg(file.errorString()));
} else {
QTextStream in(&file);
textEdit->setText(in.readAll());
setWindowTitle(fileName);
}
}
}
}
4)在mainwindow.cpp的主程序中,添加允许放下:
//接收放下操作
setAcceptDrops(true);