QT QTextEdit初始化错误

梅子酱呐 2017-12-23 02:05:04
我想写个简单的打开txt文件,然后把文件的内容显示在界面上,照着QT5开发及实例上第五章主窗口的例子抄了我需要的一部分,然后调试到showwidget->text->document()->isEmpty()时出现错误,百度后发现指针错了,show->text->document()不可访问,text初始化错了,跪求大神指教很多不懂。代码如下。。请求指教

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QAction>
#include <QMenu>
#include <QLabel>
#include "showwidget.h"
class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = 0);
~MainWindow();
void createActions();
void createMenus();
protected slots:
void showfile();
void loadFile(QString FileName);
private:
QAction * openFileAction;
QMenu *fileMenu;
QString fileName;
ShowWidget *showwidget;

};

#endif // MAINWINDOW_H




#ifndef SHOWWIDGET_H
#define SHOWWIDGET_H

#include <QWidget>
#include <QLabel>
#include <QTextEdit>
class ShowWidget : public QWidget
{
Q_OBJECT
public:
explicit ShowWidget(QWidget *parent = 0);
QTextEdit *text;
signals:

public slots:
};

#endif // SHOWWIDGET_H

//mainwindow.cpp
#include "mainwindow.h"
#include <QAction>
#include <QMenuBar>
#include <QFileDialog>
#include <QTextStream>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
createActions();
createMenus();
}

MainWindow::~MainWindow()
{

}

void MainWindow::createActions()
{
openFileAction=new QAction(QIcon("open.png"),tr("打开"),this);
connect(openFileAction,SIGNAL(triggered()),this,SLOT(showfile()));
}
void MainWindow::createMenus()
{
fileMenu= menuBar()->addMenu(tr("文件"));
fileMenu->addAction(openFileAction);
}

void MainWindow::showfile()
{
fileName=QFileDialog::getOpenFileName(this);
if(!fileName.isEmpty())
{
if(showwidget->text->document()->isEmpty())//这里错了,text未能初始化成功
{
loadFile(fileName);
}
else
{
MainWindow *newMainWindow =new MainWindow;
newMainWindow->show();
newMainWindow->loadFile(fileName);
}
}
}

void MainWindow::loadFile(QString filename)
{

printf("file name:%s\n",filename.data());
QFile file(filename);
if(file.open(QIODevice::ReadOnly|QIODevice::Text))
{
QTextStream textStream(&file);
while(!textStream.atEnd())
{
showwidget->text->append(textStream.readLine());//这里也会出错
printf("read line\n");
}
printf("end\n");
}
}

//showwidget.cpp
#include "showwidget.h"
#include <QHBoxLayout>
ShowWidget::ShowWidget(QWidget *parent) : QWidget(parent)
{
text=new QTextEdit;
QHBoxLayout *mainLayout=new QHBoxLayout(this);
mainLayout->addWidget(text);
}
...全文
693 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
judesmorning 2018-01-05
  • 打赏
  • 举报
回复
text没有在界面里new
lyz007 2018-01-05
  • 打赏
  • 举报
回复
另外,这里ShowWidget *showwidget;只定义了一个指针,应该在构造函数里用new 来创建对象的实例
lyz007 2018-01-05
  • 打赏
  • 举报
回复
showwidget->text->append(textStream.readLine());//这里也会出错 text是属性,是只读的,应该用setext()
  • 打赏
  • 举报
回复
你的MainWindow是主窗口,其中没有见你实例化ShowWidget。所以其中的text也只是指针,没有具体实例对应,你调用其中代码必定报错。
  • 打赏
  • 举报
回复
你的text控件在哪里new的?
课程亮点       本课程是PySide6零基础入门与项目实战视频教程,经过精心设计,分为十个章节,制作了141页ppt, 接近70个代码示例,主要讲解PySide6开发环境安装、基础控件与界面布局、项目实战,PySide6程序打包,安装包制作,安装卸载、更新,发布等知识。涵盖从基础概念到高级应用的全方位知识,旨在为你提供一条清晰、系统的学习之路。无论你是编程新手,还是希望深化对PySide6的了解,本课程都能满足你的需求。       教学环境:Win11 64bit、Python3.11、PyCharm、Anacoda。课程大纲第一章:基础篇 PySide6开发环境安装        从Anaconda环境配置开始,带你快速入门Win11/win10下PySide6、PyQt5开发环境的安装与配置,分别介绍PyCharm与VSCode如何配置PySide6,  以及Python AnaConda的基本用法,创建虚拟环境,安装python模块。第二章 控件与布局篇 PySide6常用控件与界面布局使用介绍        深入PySide6中的常用控件与界面布局技巧,通过丰富的实例,掌握PySide6的窗口、布局、控件等核心内容。主要介绍QLabel、QPushButton、QLineEdit、QCheckBox、QComboBox、QTextEditQTextBrowser、QListView与QListWidget、QStackedWidget、QTabWidget、QTableView等控件以及水平垂直布局,弹簧控件,栅格布局,表单布局。第三章 信号槽与事件机制       解锁PySide6的信号槽机制和事件处理技能,让你的应用更加灵活。详细介绍Qt自定义信号槽,跨窗口传递信号;Qt鼠标事件,键盘事件,组合事件,事件过滤。第四章 QMainWindow应用篇       详细介绍QMainWindow的使用,包括菜单栏、工具栏、状态栏和停靠窗口等。第五章 样式表qss与自定义控件        教你如何使用样式表美化应用界面,并创建独特的自定义控件。掌握这些技能后,学员将能够设计出既美观又功能丰富的用户界面。第六章 图表与曲线        引入pyqtgraph,展示如何在PySide6应用中绘制图表和动态曲线。第七章 数据库编程        带你进入数据库编程世界,使用sqlite3与PySide6结合,进行数据存储和管理。第八章 项目实战:高仿有道词典        通过一个高仿有道词典的项目,将所学知识融会贯通,实战演练。课程中将会接入翻译接口,开发一个属于自己的翻译软件。第九章 打包与部署       教你如何将PySide6项目打包成exe,并使用Inno Setup制作安装包,介绍软件更新、卸载策略,让你的应用轻松上线。第十章 课程总结        回顾整个课程的学习内容,巩固知识点,为进一步的学习和应用打下坚实的基础。教学特色       实战案例:每个章节都配备实战案例,让学习者在实践中深化理解。       代码资料全覆盖:提供全套课程代码资料下载,便于学习者随时查阅和复习。       高效学习路径:课程内容结构清晰,由浅入深,适合不同层次的学习者。       本课程提供全部代码与在线答疑。谁应该学习这个课程       对图形界面开发感兴趣的编程新手。       希望提升个人技能,进入或者深耕在GUI开发领域的开发者。       需要快速掌握PySide6进行项目开发的软件工程师。结语        通过本课程的学习,你不仅能掌握PySide6的核心技能,还能通过实战项目提升解决实际问题的能力,最终让你能独立完成专业的GUI应用开发。随着技术的深入,你将发现PySide6不仅仅是一个工具库,它开启的是一扇通往高效、美观应用开发的大门。        开始PySide6的学习之旅,让你的编程之路更加精彩!
目 录 第一章 开发环境 1.1 Qt 简介5 1.2 下载安装 Qt Creator 6 1.3 第一个程序 Hello World 7 第二章 窗体应用 1.1 窗体基类说明 12 1.2 控制窗体大小 13 1.3 窗体初始位置及背景色 13 1.4 修改标题栏图标 14 1.5 移动无边框窗体 16 1.6 去掉标题栏中最大化、最小化按钮 17 1.7 多窗体调用 18 1.8 字体形状窗体 20 第三章 控件应用 1.1 QPushButton按钮 23 1.2 QLabel标签 23 1.3 QLineEdit单行文本 24 1.4 QTextEdit多行文本 25 1.5 QPlainTextEdit多行文本 26 1.6 QComboBox下拉列表框 26 1.7 QFontComboBox字体下拉列表框 27 1.8 QSpinBox控件 28 1.9 QTimeEdit时间控件 29 1.10 QDateEdit日期控件 30 1.11 QScrollBar控件 30 1.12 QRadioButton单选按钮 31 1.13 QCheckBox复选框 32 1.14 QListView 列表控件 34 1.15 QTreeView树控件 34 1.16 QTableView表格控件 35 1.17 QHBoxLayout横向布局 36 1.18 QGridLayout网格布局 37 1.19 QGroupBox控件 38 1.20 QTabWidget控件 39 1.21 QMenu、QToolBar控件 41 1.22 任务栏托盘菜单 43 第四章 组件应用 1.1日历组件 47 1.2登录窗口 48 1.3文件浏览对话框 50 1.4颜色选择对话框 51 1.5进度条实例53 1.6Timer实时更新时间 54 第五章 文件操作 1.1创建文件夹 57 1.2写入文件 58 1.3修改文件内容 60 1.4删除文件 62 1.5修改文件名 63 1.6 INI文件写入操作 65 1.7 INI文件读取操作 68 1.8创建XML文件 71 1.9读取XML文件 72 第六章 图形图像操作 1.1绘制文字 75 1.2绘制线条 75 1.3绘制椭圆 77 1.4显示静态图像 78 1.5显示动态图像 78 1.6图片水平移动 79 1.7图片翻转 80 1.8图片缩放 82 1.9图片中加文字 84 1.10图像扭曲 85 1.11模糊效果 85 1.12着色效果 86 1.13阴影效果 87 1.14透明效果 87 第七章 多媒体应用 1.1音频、视频播放器 90 1.2播放Flash动画 94 1.3播放图片动画 95 第八章 系统操作 1.1获取屏幕分辨率 98 1.2获取本机名、IP地址 98 1.3根据网址获取IP地址 99 1.4判断键盘按下键值 100 1.5获取系统环境变量 101 1.6执行系统命令 102 第九章 注册表 1.0简要说明注册表 105 1.1写入注册表 105 1.2查找注册表 106 1.3修改IE浏览器的默认主页 107 第十章 数据库基础 1.1查询数据库驱动 109 1.2Qodbc连接Access数据库 109 1.3插入数据 111 1.4数据列表 112 1.5操作SQLite数据库 113 1.6SQLite数据库视图管理器 115 第十一章 网络开发 1.1点对点聊天服务端 119 1.2点对点聊天客户端 123 1.3局域网广播聊天 128 1.4SMTP协议发送邮件 148 1.5调用系统DLL判断网络连接状态 152 第十二章 进程与线程 1.1进程管理器 155 1.2线程QThread应用 158 1.3线程QRunnable应用 159 第十三章 数据安全 1.1 QByteArray加密数据 163 1.2 AES加密数据 164 1.3 MD5 加密数据 165 1.4 生成随机数 166 第十四章 打包部署 1.1 FilePacker 打包 169 1.2 Inno Setup 打包 174

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧