一步步学Qt,第四天-Qt 建立MainWindow遇到的问题,也是常见GUI工具的问题
今天写了一个MainWidow,但是遇到的问题,很有意思,先看效果吧:(期望的效果)
结果我的结果是:
也就是,资源文件没有加载.
就在此刻,我突然的冒出来,是不是因为图片格式的问题?我里面改了一个试了试,此时的结果是
![](http://hi.csdn.net/attachment/201108/27/0_1314454881Em6G.gif)
也就是说和资源的文件格式有关系,再试试试其他的部分,运行结果:
![](http://hi.csdn.net/attachment/201108/27/0_1314455170o1vO.gif)
正常了
.在窗口中使用的资源在窗口中的呈现结果,和资源文件的文件格式有关系的.
之前使用的文件是ico文件,那么这个或许在那个时候是可以的,不过因为不稳定所以就不行了.
附上源代码:
之前使用的文件是ico文件,那么这个或许在那个时候是可以的,不过因为不稳定所以就不行了.
附上源代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
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 setting
ui->mainToolBar->addAction(ui->action_New);
ui->mainToolBar->addAction(ui->action_Open);
ui->mainToolBar->addAction(ui->action_Cut);
ui->mainToolBar->addAction(ui->action_About);
//slot setting
connect(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 gui
TARGET = widget
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
RESOURCES += \
app.qrc
OTHER_FILES += \
app.rc
RC_FILE +=\
app.rc
![](http://hi.csdn.net/attachment/201108/27/0_1314454248K1V1.gif)