QT記事本
現在窗體上繪製好自己的記事本介面,然後再標頭檔案中定義幾個需要的槽和函式。我解決了幾個小問題,就是再新增選單的圖示時,明明新增了圖示,卻無法顯示,後來在每個選單項的IconVisibalMenu選項構上。然後在使用copy和paste()函式時出現了錯誤,不知道怎麼呼叫到這個函式。革命尚未成功,同志仍需努力。
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setCentralWidget(this->ui->textEdit);
// this->setStyleSheet(tr("background:url(:/images/Jellyfish.jpg)"));
// this->setStyleSheet(tr("background:rgb(102,102,0,255)"));//這一句會將設定的背景影象覆蓋掉
//對於選單欄對應的是Action,背景和快捷鍵都是可以設定的
// ui->actionNew->setIcon(QIcon(QPixmap("./images/new.png")));
// ui->actionOpen->setIcon(QIcon(QPixmap("./open.png")));
// ui->action_Save->setIcon(QIcon(QPixmap("./images/save.png")));
connect(ui->actionNew,SIGNAL(triggered()),this,SLOT(newslot()));
connect(ui->actionOpen,SIGNAL(triggered()),this,SLOT(openslot()));
connect(ui->action_Save,SIGNAL(triggered()),this,SLOT(saveslot()));
connect(ui->action_Save_As,SIGNAL(triggered()),this,SLOT(saveasslot()));
connect(ui->action_EXIT,SIGNAL(triggered()),this,SLOT(close()));
connect(ui->textEdit,SIGNAL(copyAvailable(bool)),ui->action_Copy,SLOT(setEnabled(bool)));
connect(ui->action_Copy,SIGNAL(triggered()),this,SLOT(copy()));//系統自帶的函式
connect(ui->action_Cut,SIGNAL(triggered()),this,SLOT(cut()));
ui->action_Copy->setEnabled(false);
ui->action_Cut->setEnabled(false);
}
void MainWindow::closeEvent(QCloseEvent *event)
{
if(ui->textEdit->document()->isModified()==true )
{
QMessageBox::StandardButton ret=QMessageBox::warning(this,"save files","document has been modifeld!",QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel);
if(ret==QMessageBox::Save)
saveslot();//儲存對應的函式
else if(ret==QMessageBox::Discard)//如果是取消則什麼都不做
;
else
{
event->ignore();
return;
}
}
event->accept();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::saveslot()
{
if(ui->textEdit->document()->isModified())
{
if(currentname.isEmpty())
{
saveasslot();
}
else
{
QFile file(currentname);
if(file.open(QIODevice::WriteOnly))
{
QDataStream out(&file);
out<<ui->textEdit->toPlainText();
}
else
qDebug()<<"wrong here ";
}
ui->textEdit->document()->setModified(false);
}
}
void MainWindow::newslot()
{
if(ui->textEdit->document()->isModified())
{
QMessageBox::StandardButton ret= QMessageBox::warning(this,"save files","document has been modified",QMessageBox::Save |QMessageBox::Discard|QMessageBox::Cancel);
if(ret==QMessageBox::Save)
saveslot();
else if(ret==QMessageBox::Discard)
;
else
return;
}
currentname="";
ui->textEdit->setPlainText("");//新建一個檔案時,將文字框恢復到空字串
}
void MainWindow::openslot()//開啟檔案
{
QString filename=QFileDialog::getOpenFileName(this,"open files","","all files(*)");
if(filename.isEmpty())//r如果檔案為空則什麼都不做
return;
else
{
currentname=filename;//將檔名儲存位現在檔名
QFile file(filename);
if(file.open(QIODevice::ReadOnly))//如果能一2只讀方式開啟檔案
{
//這裡一開始用的QIOStream,一樣的程式碼卻不成功
//QTextStream類提供了使用QIODevice讀寫文字的基本功能。
// 文字流類的功能介面和標準的C++的iostream類非常相似。
//iostream和QTextStream的不同點是我們的流操作在一個很容易被繼承的QIODevice上,
//而iostream只能操作一個不能被繼承的FILE *指標。
QTextStream in(&file);
ui->textEdit->setPlainText(in.readAll());//將文字編輯框的值設定為字串的值
}
else
qDebug()<<"lloha";
}
}
void MainWindow::saveasslot()
{
QString filename=QFileDialog::getSaveFileName(this,"save file","","all files(*)");
if(filename.isEmpty())
return;
else
{
QFile file(filename);
currentname=filename;
if(file.open(QIODevice::WriteOnly))
{
QDataStream out(&file);
out<<ui->textEdit->toPlainText();
}
else
{
qDebug()<<"open failed";
}
ui->textEdit->document()->setModified(false);
}
}
void MainWindow::help()
{
}
void MainWindow::helpqt()
{
}
相關文章
- 記事本
- 記事本介面
- Shell 記事本
- 多功能記事本:Notebooks for MacMac
- Notebooks for Mac多功能記事本Mac
- win10記事本怎麼開啟_win10的記事本在哪裡Win10
- windows10的記事本在哪裡_win10開啟記事本的步驟WindowsWin10
- 你知道的Electron小小記事本
- C# 記事本儲存logC#
- 開發一款記事本
- 兩款可替代印象筆記的記事本筆記
- 記事本怎麼轉換成excel表格 怎麼把記事本資料生成excel資料Excel
- Android 開發簡單記事本程式Android
- MiniNote Pro for Mac(mac記事本軟體)Mac
- 零碎知識點記事本
- 【Java】實現記事本(完整版)Java
- 【QT】 Qt多執行緒的“那些事”QT執行緒
- win10記事本怎麼修改格式_win10電腦記事本如何改檔案型別Win10型別
- win10桌面記事本開啟方式_win10系統怎麼開啟記事本Win10
- NoteBook - 基於 Hyperf 的記事本專案
- 用C#寫一個記事本五C#
- Mac記事本工具Soulver3的使用技巧Mac
- 多功能計算器記事本Soulver 3 for MacMac
- WorkFlowy for mac跨平臺自動同步記事本Mac
- win10開機彈出desktop記事本怎麼辦_win10開機彈出記事本的解決方法Win10
- 筆記本記憶體條怎麼裝?筆記本裝記憶體條的方法步驟、及注意事項筆記記憶體
- 好用的記事本軟體:FSNotes for mac中文版Mac
- 快樂小demo-Vue實現todoList 記事本Vue
- 修改記事本PE結構彈計算器Shellcode
- 好用的mac記事本工具推薦:Notebooks Mac版Mac
- Boost Note for Mac程式設計師程式碼記事本MacC程式程式設計師
- Cmder: 懶癌必備!從此告別記事本記命令的日子
- Timeline 3D for Mac(時間軸記事本軟體)3DMac
- win10電腦新建記事本找不到了怎麼辦_win10電腦右鍵沒有記事本怎麼解決Win10
- 親測好用的mac記事本軟體:MiniNote Pro Mac版Mac
- QT creator使用筆記QT筆記
- 電腦桌面上好用的記事本軟體有哪些?
- MiniNote Pro for Mac(mac記事本軟體) v5.9啟用版Mac
- Qt共享記憶體QSharedMemoryQT記憶體