【QT】单文档程序

来源:互联网 发布:传奇物品数据库详解 编辑:程序博客网 时间:2024/06/05 07:49

single document 单文档程序,类似于word这类打开一个窗口即为一个文档。区别于类似Notepad++的多文档程序。


  • string 和 char[] 、char* 之间的转换
    例如:
string str;char * buf;

string–>char* :
buf=str.c_str(); // 这里返回的是字符串首地址 char*

char* –>string :
str=buf; //char* 、char[] 可直接赋值给string

  • 代码
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QString>#include <QFileDialog>#include <QDebug>#include <string>#include <GBK.h>MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);    connect(ui->action_new,SIGNAL(triggered(bool)),this,SLOT(OnMenuNew()));    connect(ui->action_open,SIGNAL(triggered(bool)),this,SLOT(OnMenuOpen()));    connect(ui->action_save,SIGNAL(triggered(bool)),this,SLOT(OnMenuSave()));    m_label=new QLabel(this);    ui->statusBar->addWidget(m_label);    m_label->setText(tr("文件名:初始化"));}MainWindow::~MainWindow(){    delete ui;}void MainWindow::OnMenuNew(){  filepath="";  ui->m_plainedit->clear();  m_label->setText(tr("文件名:初始化"));}int MainWindow::OnMenuOpen(){    //选择文件    QString filepath=QFileDialog::getOpenFileName(this,tr("读取文件"));    if (filepath.length()==0) return -1;    //读取文件内容    string gbk_filepath=GBK::FromUnicode(filepath);    FILE* fp=fopen(gbk_filepath.c_str(),"rb");    char buf[512];   //缓存区 大小视文件而定    int n=fread(buf,1,512,fp);  //将fp文件内容读入buf缓存区内    buf[n]=0; //将读入的下一个字符用'\0'占位 表示字符串    fclose(fp);    //显示到界面    QString text= GBK::ToUnicode(buf);    ui->m_plainedit->setPlainText(text);    //显示到状态栏    m_label->setText(tr("已经打开"));     m_label->setText(filepath);    return 0;}int MainWindow::OnMenuSave(){    //选择文件    QString filename=QFileDialog::getSaveFileName(this,tr("保存文件"),tr("untitled.txt"));    if(filename.length()==0) return -1;    //保存文件    string gbk_filename=GBK::FromUnicode(filename);    FILE *fp=fopen(gbk_filename.c_str(),"wb");    string text=GBK::FromUnicode(ui->m_plainedit->toPlainText());    fwrite(text.c_str(),1,text.length(),fp);    fclose(fp);    m_label->setText(filename);  return 0;}
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QLabel>#include <QMainWindow>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();private:    Ui::MainWindow *ui;    QString filepath;private slots:    void OnMenuNew();    int OnMenuOpen();    int OnMenuSave();public:    QLabel *m_label;};#endif // MAINWINDOW_H

这里写图片描述

图片是ui界面设计

编译环境:QT Creator 5.5.1

原创粉丝点击