我正在创建的程序包括一个QTextEdit
部件。我想执行以下功能:
bool
撤销角色的QAction
项时,当撤销的跟踪历史记录结束时,必须返回具体的值(或)。在成功执行该命令(上面的命令)之后,我猜还将实现另一个命令。谢谢。
发布于 2019-04-14 15:05:18
在Qt QTextEdit
文档中,您可以找到redo
和undo
操作。此外,您还可以测试redo
或undo
是否可以通过redoAvailable
和undoAvailable
信号进行验证。
要实现这些操作,可以使用信号/时隙注册。
例如:
#include <QVBoxLayout>
#include <QPushButton>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
QPushButton *poUndo = new QPushButton("Undo", this);
QPushButton *poRedo = new QPushButton("Redo", this);
QTextEdit *poTextEdit = new QTextEdit(this);
QHBoxLayout *poHlayout = new QHBoxLayout;
QLabel * poLabelRedoAvaliable = new QLabel(this);
QLabel * poLabelUndoAvaliable = new QLabel(this);
// add undo/redo buttons
poHlayout->addWidget(poRedo);
poHlayout->addWidget(poUndo);
QVBoxLayout *poVLayout = new QVBoxLayout;
poVLayout->addWidget(poTextEdit); // add text edit
poVLayout->addLayout(poHlayout);
// redo/undo avaliable status
poVLayout->addWidget(poLabelRedoAvaliable);
poVLayout->addWidget(poLabelUndoAvaliable);
// main central widget
QWidget *poCentral = new QWidget(this);
poCentral->setLayout(poVLayout);
this->setCentralWidget(poCentral);
// register the undo/redo actions actions
connect(poUndo, &QPushButton::clicked, poTextEdit, &QTextEdit::undo);
connect(poRedo, &QPushButton::clicked, poTextEdit, &QTextEdit::redo);
connect(poTextEdit, &QTextEdit::redoAvailable,
[poLabelRedoAvaliable](bool bAvailable)
{
if (bAvailable)
{
poLabelRedoAvaliable->setText("redo available");
}
else {
poLabelRedoAvaliable->setText("redo not available");
}
});
connect(poTextEdit, &QTextEdit::undoAvailable,
[poLabelUndoAvaliable](bool bAvailable)
{
if (bAvailable)
{
poLabelUndoAvaliable->setText("undo available");
}
else {
poLabelUndoAvaliable->setText("undo not available");
}
});
}
https://stackoverflow.com/questions/55676544
复制相似问题