Add copy and paste right click menu to terminal plugin

This commit is contained in:
2025-11-16 01:16:21 +00:00
parent e25d8686da
commit d7e3355cf6

View File

@@ -2,7 +2,8 @@
#include <QVBoxLayout>
#include <QWidget>
#include <QApplication>
#include <QMenu>
#include <QAction>
QString TerminalPlugin::pname()
{
@@ -18,21 +19,48 @@ QWidget* TerminalPlugin::pcontent()
{
QWidget *test = new QWidget();
QVBoxLayout *mainLayout = new QVBoxLayout;
console = new QTermWidget(test);
QFont font = QApplication::font();
font.setFamily("Monospace");
font.setPointSize(12);
console->setTerminalFont(font);
console->setScrollBarPosition(QTermWidget::ScrollBarRight);
console->setColorScheme("WhiteOnBlack");
console->setContextMenuPolicy(Qt::CustomContextMenu);
connect(console, &QWidget::customContextMenuRequested, this, [=](const QPoint &pos) {
QMenu menu;
QAction *copyAct = new QAction(tr("Copy"), &menu);
QAction *pasteAct = new QAction(tr("Paste"), &menu);
if (console->selectedText().isEmpty()) {
copyAct->setEnabled(false);
}
connect(copyAct, &QAction::triggered, [=]() {
console->copyClipboard();
});
connect(pasteAct, &QAction::triggered, [=]() {
console->pasteClipboard();
});
menu.addAction(copyAct);
menu.addAction(pasteAct);
QPoint globalPos = console->mapToGlobal(pos);
menu.exec(globalPos);
});
test->setWindowTitle(tr("Terminal Plugin"));
test->resize(600, 400);
mainLayout->addWidget(console);
test->setLayout(mainLayout);
QIcon icon = QIcon(":/images/monkey.png");
test->setWindowIcon(icon);
return test;
}