gpt4 book ai didi

c++ - customContextMenuRequested(const QPoint&) 想要 customContextMenuRequested(const QPoint&, QTableView)

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:44:30 30 4
gpt4 key购买 nike

我遇到了一个问题,不知道如何解决。问题是我想要将我正在使用的 QTableView 对象发送到下一个函数。这样我就不需要为我拥有的所有表复制函数。我可以制作一个通用函数并重用它。但要做到这一点,我需要发送 QTableView 以便我可以添加我想添加的行...请查看我的代码的外观。代码是我想要的。

void InputWindow::on_pushButton_ViewMilestone_clicked()
{

QTableView *viewMilestone = new QTableView;
viewMilestone->setModel(sourceMilestonesModel);
viewMilestone->setContextMenuPolicy(Qt::CustomContextMenu);
viewMilestone->resizeColumnsToContents();
viewMilestone->setMinimumWidth(getVerticalSizeOfQTableView(viewMilestone));
viewMilestone->show();

connect(viewMilestone, SIGNAL(customContextMenuRequested(const QPoint&)),
this, SLOT(showMenu(const QPoint&)));

}

void InputWindow::showMenu(const QPoint &pos, QTableView *tableView)
{
QAction *insertRowAction = new QAction(this);
insertRowAction->setText("Insert new row");

connect(insertRowAction, SIGNAL(triggered()),
this, SLOT(addNewRow()));

QMenu *rightClickMenu = new QMenu(this);
rightClickMenu->addAction(insertRowAction);
rightClickMenu->popup(tableView->viewport()->mapToGlobal(pos));

}

void InputWindow::addNewRow(QTableView *qTblView)
{
QAbstractItemModel *tableModel = qTblView->model();
int rows = tableModel->rowCount();
tableModel->insertRow(rows);
}

最佳答案

听起来像 QSignalMapper在这里可能会有所帮助。它旨在将多个 QObject 链接到一个插槽,并提供有关原始来源的上下文。它通常比 MarioBlueSkies sender() 机制更可靠,因为您可以更明确地控制针对 Mapper 注册的内容。

像这样的……

QSignalMapper *mapper = new QSignalMapper(this);
connect(mapper, SIGNAL(mapped(const QObject&)),
this, SLOT(clicked(const QObject&)));

void InputWindow::on_pushButton_ViewMilestone_clicked()
{

QTableView *viewMilestone = new QTableView;
viewMilestone->setModel(sourceMilestonesModel);
viewMilestone->setContextMenuPolicy(Qt::CustomContextMenu);
viewMilestone->resizeColumnsToContents();
viewMilestone->setMinimumWidth(getVerticalSizeOfQTableView(viewMilestone));
viewMilestone->show();
connect(viewMilestone, SIGNAL(customContextMenuRequested(const QPoint&)), signalMapper, SLOT(map()));
signalMapper->setMapping(viewMilestone, viewMilestone);
}

关于c++ - customContextMenuRequested(const QPoint&) 想要 customContextMenuRequested(const QPoint&, QTableView),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23673415/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com