Small fix to the notepad example

- Remove misleading note about setCentralWidget()
- Connect copy/paste and undo/redo directly to the QTextEdit instead
  of routing them via window
- Add the missing "About" menu
- Check for reject of QFileDialog

Change-Id: Ia7457fbedd762028bf2bcde99dfcfb50bbc97f1d
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
bb10
Friedemann Kleint 2021-05-10 11:47:31 +02:00
parent 43ba45151a
commit 902a4d63a1
4 changed files with 28 additions and 68 deletions

View File

@ -320,13 +320,6 @@
\skipto Notepad::~Notepad
\printuntil }
In order to have the text edit field occupy the whole screen, we add
\c setCentralWidget to the main window.
\quotefromfile tutorials/notepad/notepad.cpp
\skipto Notepad::Notepad(QWidget *parent)
\printuntil }
\section2 Project File
The wizard generates the following project file, \c {notepad.pro}, for

View File

@ -72,19 +72,24 @@ Notepad::Notepad(QWidget *parent) :
ui(new Ui::Notepad)
{
ui->setupUi(this);
this->setCentralWidget(ui->textEdit);
connect(ui->actionNew, &QAction::triggered, this, &Notepad::newDocument);
connect(ui->actionOpen, &QAction::triggered, this, &Notepad::open);
connect(ui->actionSave, &QAction::triggered, this, &Notepad::save);
connect(ui->actionSave_as, &QAction::triggered, this, &Notepad::saveAs);
connect(ui->actionPrint, &QAction::triggered, this, &Notepad::print);
connect(ui->actionExit, &QAction::triggered, this, &Notepad::exit);
connect(ui->actionCopy, &QAction::triggered, this, &Notepad::copy);
connect(ui->actionCut, &QAction::triggered, this, &Notepad::cut);
connect(ui->actionPaste, &QAction::triggered, this, &Notepad::paste);
connect(ui->actionUndo, &QAction::triggered, this, &Notepad::undo);
connect(ui->actionRedo, &QAction::triggered, this, &Notepad::redo);
connect(ui->actionExit, &QAction::triggered, this, &QWidget::close);
#if QT_CONFIG(clipboard)
connect(ui->textEdit, &QTextEdit::copyAvailable, ui->actionCopy, &QAction::setEnabled);
connect(ui->actionCopy, &QAction::triggered, ui->textEdit, &QTextEdit::copy);
connect(ui->actionCut, &QAction::triggered, ui->textEdit, &QTextEdit::cut);
connect(ui->actionPaste, &QAction::triggered, ui->textEdit, &QTextEdit::paste);
#endif
connect(ui->textEdit, &QTextEdit::undoAvailable, ui->actionUndo, &QAction::setEnabled);
connect(ui->actionUndo, &QAction::triggered, ui->textEdit, &QTextEdit::undo);
connect(ui->textEdit, &QTextEdit::redoAvailable, ui->actionRedo, &QAction::setEnabled);
connect(ui->actionRedo, &QAction::triggered, ui->textEdit, &QTextEdit::redo);
connect(ui->actionFont, &QAction::triggered, this, &Notepad::selectFont);
connect(ui->actionBold, &QAction::triggered, this, &Notepad::setFontBold);
connect(ui->actionUnderline, &QAction::triggered, this, &Notepad::setFontUnderline);
@ -117,6 +122,8 @@ void Notepad::newDocument()
void Notepad::open()
{
QString fileName = QFileDialog::getOpenFileName(this, "Open the file");
if (fileName.isEmpty())
return;
QFile file(fileName);
currentFile = fileName;
if (!file.open(QIODevice::ReadOnly | QFile::Text)) {
@ -136,6 +143,8 @@ void Notepad::save()
// If we don't have a filename from before, get one.
if (currentFile.isEmpty()) {
fileName = QFileDialog::getSaveFileName(this, "Save");
if (fileName.isEmpty())
return;
currentFile = fileName;
} else {
fileName = currentFile;
@ -155,6 +164,8 @@ void Notepad::save()
void Notepad::saveAs()
{
QString fileName = QFileDialog::getSaveFileName(this, "Save as");
if (fileName.isEmpty())
return;
QFile file(fileName);
if (!file.open(QFile::WriteOnly | QFile::Text)) {
@ -182,42 +193,6 @@ void Notepad::print()
#endif // QT_CONFIG(printer)
}
void Notepad::exit()
{
QCoreApplication::quit();
}
void Notepad::copy()
{
#if QT_CONFIG(clipboard)
ui->textEdit->copy();
#endif
}
void Notepad::cut()
{
#if QT_CONFIG(clipboard)
ui->textEdit->cut();
#endif
}
void Notepad::paste()
{
#if QT_CONFIG(clipboard)
ui->textEdit->paste();
#endif
}
void Notepad::undo()
{
ui->textEdit->undo();
}
void Notepad::redo()
{
ui->textEdit->redo();
}
void Notepad::selectFont()
{
bool fontSelected;
@ -244,8 +219,7 @@ void Notepad::setFontBold(bool bold)
void Notepad::about()
{
QMessageBox::about(this, tr("About MDI"),
tr("The <b>Notepad</b> example demonstrates how to code a basic "
"text editor using QtWidgets"));
QMessageBox::about(this, tr("About Notepad"),
tr("The <b>Notepad</b> example demonstrates how to code a basic "
"text editor using QtWidgets"));
}

View File

@ -89,18 +89,6 @@ private slots:
void print();
void exit();
void copy();
void cut();
void paste();
void undo();
void redo();
void selectFont();
void setFontBold(bool bold);

View File

@ -53,8 +53,15 @@
<addaction name="actionRedo"/>
<addaction name="actionFont"/>
</widget>
<widget class="QMenu" name="menuAbout">
<property name="title">
<string>About</string>
</property>
<addaction name="actionAbout"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuEdit"/>
<addaction name="menuAbout"/>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
@ -171,8 +178,6 @@
<property name="toolTip">
<string>Exit notepad</string>
</property>
<property name="shortcut">
</property>
</action>
<action name="actionCopy">
<property name="icon">