利用标准文件对话框QFileDialog打开一个已经存在的文件。用QtextEdit显示文件内容。

下面给出示例

file_widget.h

#ifndef FILEWIDGET_H #define FILEWIDGET_H #include <QFileDialog> #include
<QWidget> #include <QPushButton> #include <QLabel> #include <QHBoxLayout>
#include <QFile> #include <QIODevice> #include <QTextEdit> #include
<QVBoxLayout> #include <QTextStream> #include <QMessageBox> class FileWidget :
public QWidget { Q_OBJECT public: explicit FileWidget(QWidget *parent = 0);
public slots: void slotOpenFileDialog(); private: QPushButton *openBtn; QLabel
*tipsLabel; QTextEdit *showText; }; #endif //FILEWIDGET_Hfile_widget.cpp

#include "file_widget.h" FileWidget::FileWidget(QWidget *parent /*= 0*/) :
QWidget(parent) { //---按钮与label openBtn = new QPushButton("OPEN", this);
connect(openBtn, SIGNAL(clicked()), this, SLOT(slotOpenFileDialog()));
tipsLabel = new QLabel("open file...", this); //----showText showText = new
QTextEdit(); //---按钮与label布局 QVBoxLayout *vLayout = new QVBoxLayout();
vLayout->addStretch(); vLayout->addWidget(tipsLabel);
vLayout->addWidget(openBtn); vLayout->addStretch(); vLayout->setSpacing(10); //
hLayout->setContentsMargins(10, 2, 10, 2); //---3个控件整体布局 QHBoxLayout *hLayout =
new QHBoxLayout(this); hLayout->addLayout(vLayout);
hLayout->addWidget(showText); hLayout->setSpacing(10);
hLayout->setContentsMargins(10, 2, 10, 2); //--显示布局 setLayout(hLayout);
//---窗口属性 resize(400, 300); setWindowTitle("open file"); } //------打开文件对话框 void
FileWidget::slotOpenFileDialog() { /* getOpenFileName函数说明 函数原形: QStringList
QFileDialog::getOpenFileNames( QWidget * parent = 0, const QString & caption =
QString(), // 打开文件对话框的标题 const QString & dir = QString(), // 查找目录 const QString
& filter = QString(), // 设置需要过滤的文件格式 QString * selectedFilter = 0, Options
options = 0) [static] */ //---获取文件名 QString fileName = QFileDialog ::
getOpenFileName(this, NULL, NULL, "*.h *.cpp *.txt"); //---打开文件并读取文件内容 QFile
file(fileName); //--打开文件成功 if (file.open(QIODevice ::ReadOnly | QIODevice
::Text)) { QTextStream textStream(&file); while (!textStream.atEnd()) {
//---QtextEdit按行显示文件内容 showText->append(textStream.readLine()); } } else
//---打开文件失败 { /* information函数参数说明: 函数原型 QMessageBox::information( QWidget *
parent, const QString & title, //--- 标题 const QString & text, //---显示内容
StandardButtons buttons = Ok, //---OK按钮 StandardButton defaultButton =
NoButton) [static] */ QMessageBox ::information(NULL, NULL, "open file error");
} }main.cpp

#include <QtWidgets/QApplication> #include "file_widget.h" int main(int argc,
char *argv[]) { QApplication a(argc, argv); FileWidget win; win.show(); return
a.exec(); }运行效果如下:

技术
©2019-2020 Toolsou All rights reserved,
shiro-oauth 启用第三方认证登录golang一行代码将切片转成以分号分隔的字符串vue vue-element-admin项目踩坑小结python获取excel的一列或者一行的数据 程序员与架构师华山论道判断当前对象是不是数组的4种方式(精华)2020年7月15日 微信小程序 template的使用继承jpa Repository 写自定义方法查询Vue开发小技巧python读取、写入txt文本内容