一步步学Qt,第四天-Qt 建立MainWindow遇到的问题,也是常见GUI工具的问题

本文主要是介绍一步步学Qt,第四天-Qt 建立MainWindow遇到的问题,也是常见GUI工具的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一步步学Qt,第四天-Qt 建立MainWindow遇到的问题,也是常见GUI工具的问题



今天写了一个MainWidow,但是遇到的问题,很有意思,先看效果吧:(期望的效果)

结果我的结果是:

也就是,资源文件没有加载.

就在此刻,我突然的冒出来,是不是因为图片格式的问题?我里面改了一个试了试,此时的结果是



也就是说和资源的文件格式有关系,再试试试其他的部分,运行结果:

正常了 .在窗口中使用的资源在窗口中的呈现结果,和资源文件的文件格式有关系的.
之前使用的文件是ico文件,那么这个或许在那个时候是可以的,不过因为不稳定所以就不行了.
附上源代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>namespace Ui {class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();void loadFile(QString filename);int fileChanged();void saveFile();
private:Ui::MainWindow *ui;QString fileName;
private slots:void about();void newFile();void openFile();
};#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QFileDialog>
#include <QTextStream>
#include <QTextEdit>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);setCentralWidget(ui->textEdit);//action settingui->mainToolBar->addAction(ui->action_New);ui->mainToolBar->addAction(ui->action_Open);ui->mainToolBar->addAction(ui->action_Cut);ui->mainToolBar->addAction(ui->action_About);//slot settingconnect(ui->action_About,SIGNAL(triggered()),this,SLOT(about()));connect(ui->action_New,SIGNAL(triggered()),this,SLOT(newFile()));connect(ui->action_Open,SIGNAL(triggered()),this,SLOT(openFile()));
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::about()
{QMessageBox::about(this,tr("About this app"),tr("copyrigth by PowerLinux"));return;
}void MainWindow::newFile()
{int i = fileChanged();if(i == 1){int s = QMessageBox::question(this,tr("Asking"),tr("File is changed ,Save it?"),QMessageBox::Ok | QMessageBox::Cancel);if(s == QMessageBox::Ok){saveFile();}else{ui->textEdit->setText("");}}else{MainWindow *newWin = new MainWindow;newWin->show();}}void MainWindow::openFile()
{int i = fileChanged();if(i == 1){int s = QMessageBox::question(this,tr("Asking"),tr("File is changed ,are you sure?"),QMessageBox::Ok | QMessageBox::Cancel);if(s == QMessageBox::Ok){fileName = QFileDialog::getOpenFileName(this);if (!fileName.isEmpty()) {loadFile(fileName);}}}else{fileName = QFileDialog::getOpenFileName(this);if (!fileName.isEmpty()) {loadFile(fileName);}}
}void MainWindow::loadFile(QString filename){QFile file(filename);if(file.open(QIODevice::ReadOnly | QIODevice::Text)){QTextStream textStream(&file);while(!textStream.atEnd()){ui->textEdit->append(textStream.readLine());}}
}int MainWindow::fileChanged(){if(ui->textEdit->document()->isModified()){return 1;}else{return 0;}
}
void MainWindow::saveFile()
//! [44] //! [45]
{fileName = QFileDialog::getSaveFileName(this);if (!fileName.isEmpty()){QFile file(fileName);if (!file.open(QFile::WriteOnly | QFile::Text)) {QMessageBox::warning(this, tr("Application"),tr("Cannot write file %1:\n%2.").arg(fileName).arg(file.errorString()));}else{QTextStream out(&file);out << ui->textEdit->toPlainText();}}
}

<RCC><qresource prefix="/images"><file>images/accessories-text-editor.png</file><file>images/help-browser.png</file><file>images/internet-mail.png</file><file>images/office-calendar.png</file></qresource>
</RCC>

#-------------------------------------------------
#
# Project created by QtCreator 2011-08-27T13:54:14
#
#-------------------------------------------------QT       += core guiTARGET = widget
TEMPLATE = appSOURCES += main.cpp\mainwindow.cppHEADERS  += mainwindow.hFORMS    += mainwindow.uiRESOURCES += \app.qrcOTHER_FILES += \app.rc
RC_FILE +=\app.rc




这篇关于一步步学Qt,第四天-Qt 建立MainWindow遇到的问题,也是常见GUI工具的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/232352

相关文章

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

MySQ中出现幻读问题的解决过程

《MySQ中出现幻读问题的解决过程》文章解析MySQLInnoDB通过MVCC与间隙锁机制在可重复读隔离级别下解决幻读,确保事务一致性,同时指出性能影响及乐观锁等替代方案,帮助开发者优化数据库应用... 目录一、幻读的准确定义与核心特征幻读 vs 不可重复读二、mysql隔离级别深度解析各隔离级别的实现差异