如何添加清除选项 t qplaintextedit
How to add clear option t qplaintextedit?
我有一个动态加载文本内容的qplaintextedit
,QString
.
我想在右键单击qplaintextedit时出现的菜单中添加一个选项。如何以编程方式执行此操作,以便能够将自己的菜单项添加到默认菜单项?任何想法将不胜感激。
你可以 sublcass QPlainTextEdit
并重新实现方法contextMenuEvent(QContextMenuEvent *event)
。或者,您可以将事件过滤器添加到QPlainTextEdit
并捕获QContextMenuEvent
。
在实现中,可以调用 QMenu *QPlainTextEdit::createStandardContextMenu(const QPoint &position)
来创建文本编辑的默认菜单,然后向其添加自定义项。
示例(子类(:
void MyTextEdit::contextMenuEvent(QContextMenuEvent *event)
{
QMenu* menu = createStandardContextMenu(event->pos());
QAction* clearAction = menu->addAction("Clear");
QAction* choosedAction = menu->exec(event->globalPos());
//...
delete menu;
}
看:
- 事件处理程序
- 事件过滤器
- QPlainTextEdit::contextMenuEvent
- QPlainTextEdit::createStandardContextMenu
你必须重新实现函数: void QPlainTextEdit::contextMenuEvent(QContextMenuEvent *event)
文档中的更多详细信息 这里 : http://doc.qt.io/qt-5/qplaintextedit.html#contextMenuEvent
不需要
子类 QPlainTextEdit,也不需要使用事件过滤器。 您可以在应用程序的主小部件中完成所有操作。 以下内容对我使用Qt版本4.7.4和4.8.5有用。
在设计器中:
添加名称为"文本框"的QPlainTextEdit
小部件。
在 MainWindow.h 中:
// Auto generated from MainWindow.ui
#include "ui_MainWindow.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
private:
/// The auto generated user interface.
Ui::MainWindowClass ui;
...
}
在主窗口中.cpp:
MainWindow::MainWindow( QWidget * pParent, Qt::WFlags flags )
: QMainWindow( pParent, flags )
, ui( )
{
ui.textbox->setContextMenuPolicy( Qt::CustomContextMenu );
connect( ui.textbox, SIGNAL( customContextMenuRequested( QPoint ) ),
this, SLOT( onTextboxCustomContextMenuRequested( QPoint ) ) );
}
void MainWindow::onTextboxCustomContextMenuRequested( QPoint p )
{
// Start with the standard menu.
QMenu * pMenu = ui.textbox->createStandardContextMenu();
QAction * pAction;
// Clear.
// Because QPlainTextEdit::clear() is a slot method, I can connect directly to it.
pAction = new QAction( "Clear", this );
connect( pAction, SIGNAL( triggered() ), ui.textbox, SLOT( clear() ) );
pMenu->addAction( pAction );
// Show the menu.
QPoint q = ui.textbox->mapToGlobal( p );
pMenu->exec( q );
// The menu's ownership is transferred to me, so I must destroy it.
delete pMenu;
}
相关文章:
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- Win32编译器选项和内存分配
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 清除前检查矢量
- 通过选项卡的文本设置QTabWidget顺序
- 通过ccmake在cmake中缓存依赖选项
- 如何传递多个 std::文件系统选项?
- 基于编译器选项的编译二进制路径
- ifstream文件在从行中读取时被清除
- "perf_event_attr"结构的"read_format"属性的选项到底是什么?
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- 如何应用 libcurl 的持久连接选项
- 文件中.dat Dlib 选项
- LLVM | codegen 用于带有命令行选项的程序输入功能
- 编译 Boost 时在 OS X 上的"ld:未知选项:-soname"
- 按钮悬停在 QT 中垂直布局的选项卡小部件中不起作用
- CMake:如何清除目标编译选项
- 如何添加清除选项 t qplaintextedit