一。警告框:
bool MainWindow::okToContinue() { if (isWindowModified() ) { int r = QMessageBox::warning(this, tr("Spreadsheet"), tr(" The document has been modified.\n Do you want to save your changes?"), QMessageBox::Yes|QMessageBox::No | QMesageBox::Cancel); if( r == QMesageBox::Yes) return save(); else if(r == QMessageBox::Cancel) return false; } return true; }
2.弹出用户框选择一个文件,不知道能不能选择文件夹
void MainWindow::open()
{
if(okToContinue() ){
QString fileName = QFileDialog::getOpenFileName(this(父窗口部件), tr()(标题), "."(从哪一级目录开始) , tr("Spreadsheet files (*.sp)") 文件过滤器);
if (!fileName.isEmpty) loadFile(fileName);
}}
bool MainWindow::loadFile(const QString &fileName)
{
if(! spreadsheet->readFile(fileName) ){ statusBar()->showMessage(tr("Loading canceled"), 2000);} return false;
setCurrentFile(fileName);
statusBar()->showMessage( tr("File loaded"), 2000);
return true;
}
page 46\47\48(已经使用过的文件列表)略过了。
文件另存为框:
bool MainWindow::saveAs()
{
QString fileName = QFileDialog::getSaveFileName( this, tr("Save Spreadsheet"), "." , tr("Spreadsheet files (*.sp)") );
if( fileName.isEmpty() ) return false;
return saveFile(fileName);
}
==========使用对话框==============
activateWindow()让窗口成为顶层窗口和激活状态。
show()是非模态对话框,但是之后又调用了setModal()才会变成模态对话框。
----spreadsheet特性操作:52page
QMessageBox::about( this, tr("<h2>Spreadsheet 1.1</h2>"), tr("<p>lalallalaalalalaxx.....</p>") );
=========================存储设置========================
QSettings把设置信息存储为键值对形式。
写入和保存应用的设置; writeSeetings() readSettings().比如窗口形状,最近打开的文件,以及选项的设置。
多文档 page 55
程序启动画面 page58
============第4章节===============
文件操作:
QFile,调用open打开这个文件,再创建QDataStream对象,由它操作这个QFile对象并且使用该对象输出数据。
QDataStream功能齐全,即可用于QFile中,也可以把它用于QBuffer,QProcess,QTcpSocket,QUdpSocket or QSslSocket中。
bool Spreadsheet::readFile(const QString &fileName) { QFile file(fileName); if(! file.open(QIODevice::ReadOnly) ){ } QDataStream in(&file); in.setVersion(QDataStream::QT_4_3); quint32 magic; in >> magic; if( magic != MagicNumber){ ...... } }
..... to page 80. 电子表格操作特性
page81:创建自定意窗口部件。