#include #include #include #include #include #include #include class MyEdit : public QPlainTextEdit { public: void keyPressEvent(QKeyEvent *e) { viewport()->setCursor(Qt::BlankCursor); QPlainTextEdit::keyPressEvent(e); } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); QDialog dlg; dlg.setLayout(new QVBoxLayout); auto edit = new MyEdit; dlg.layout()->addWidget(edit); dlg.resize(400, 300); QShortcut sc(Qt::ALT | Qt::Key_G, &dlg); QObject::connect(&sc, &QShortcut::activated, [&]() { auto newEdit = new MyEdit; QApplication::setOverrideCursor(Qt::BusyCursor); dlg.layout()->replaceWidget(edit, newEdit); edit = newEdit; QEventLoop loop; QTimer timer; QObject::connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit); timer.start(500); loop.exec(QEventLoop::ExcludeUserInputEvents); QApplication::restoreOverrideCursor(); }); dlg.show(); return a.exec(); }