use*_*297 30 qt right-click qtreeview qstandarditem
我用Qt Creator用c ++编写了一个Qt桌面应用程序.
我在主窗口中声明了一个treeView和一个兼容的模型.
现在,我想为树项目提供一个右键单击菜单.不是针对所有项目,而是针对其中的一部分,例如:对于具有偶数索引的树元素.
我尝试使用以下代码添加一个简单的上下文菜单:
在.h文件中:
QStandardItemModel* model;
QMenu* contextMenu;
QAction* uninstallAction;
private slots:
void uninstallAppletClickedSlot();
Run Code Online (Sandbox Code Playgroud)
并在.cpp文件中:
在构造函数中:
ui->treeView->setModel(model);
contextMenu = new QMenu(ui->treeView);
ui->treeView->setContextMenuPolicy(Qt::ActionsContextMenu);
uninstallAction = new QAction("Uninstall TA",contextMenu);
ui->treeView->addAction(uninstallAction);
connect(uninstallAction, SIGNAL(triggered()), this, SLOT(uninstallAppletClickedSlot()));
Run Code Online (Sandbox Code Playgroud)
和一个插槽:
void MainWindow::uninstallAppletClickedSlot()
{
}
Run Code Online (Sandbox Code Playgroud)
这段代码给了我一个带有想要动作的上下文菜单,但你知道我怎么能只为QStandardItem带有偶数索引的s 添加这个动作?
顺便说一句,我是通过以下方式向treeView添加项目:
void MainWindow::AddItem(QString name)
{
QStandardItem *parentItem = model->invisibleRootItem();
QStandardItem *app = new QStandardItem(name);
parentItem->appendRow(app);
}
Run Code Online (Sandbox Code Playgroud)
我google了很多,但一无所获:(
提前致谢!
vah*_*cho 49
我会用以下方式做到这一点:
配置上下文菜单
ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui->treeView, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onCustomContextMenu(const QPoint &)));
Run Code Online (Sandbox Code Playgroud)
实现上下文菜单处理
void MainWindow::onCustomContextMenu(const QPoint &point)
{
QModelIndex index = ui->treeView->indexAt(point);
if (index.isValid() && index.row() % 2 == 0) {
contextMenu->exec(ui->treeView->viewport()->mapToGlobal(point));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27716 次 |
| 最近记录: |