MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); // создаю 4 ячейки ui->tableWidget->setColumnCount(4); ui->tableWidget->setRowCount(1); for (int i = 0; i < 4; ++i) ui->tableWidget->setItem( 0, i, new QTableWidgetItem("Element"+QString::number(i))); ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection); ui->tableWidget->setContextMenuPolicy(Qt::ActionsContextMenu); QAction *action1 = new QAction("action1",this); QAction *action2 = new QAction("action2",this); ui->tableWidget->addAction(action1); ui->tableWidget->addAction(action2); ui->tableWidget->connect(action1, SIGNAL(triggered()), this, SLOT(actionSlot1())); ui->tableWidget->connect(action2, SIGNAL(triggered()), this, SLOT(actionSlot2()));}void MainWindow::actionSlot1(){ qDebug() << "set action1";}void MainWindow::actionSlot2(){ qDebug() << "set action2";}
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); ui->tableWidget->setColumnCount(4); ui->tableWidget->setRowCount(1); for (int i = 0; i < 4; ++i) ui->tableWidget->setItem( 0, i, new QTableWidgetItem("Element"+QString::number(i))); ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection); ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu); QAction *action1 = new QAction("action1",this); QAction *action2 = new QAction("action2",this); contextMenu=new QMenu(); contextMenu->addAction(action1); contextMenu->addAction(action2); connect(ui->tableWidget, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(slotShowContextMenu(const QPoint &)));}void MainWindow::slotShowContextMenu(const QPoint &pos){ QTableWidgetItem *item; item = ui->tableWidget->itemAt(pos); if(!item) return; contextMenu->exec(QCursor::pos()); qDebug() << "item text" << item->text();}
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); // создаю 4 ячейки ui->tableWidget->setColumnCount(4); ui->tableWidget->setRowCount(1); for (int i = 0; i < 4; ++i) ui->tableWidget->setItem( 0, i, new QTableWidgetItem("Element"+QString::number(i))); ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection); ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu); action1 = new QAction("action1",this); action2 = new QAction("action2",this); contextMenu=new QMenu(); contextMenu->addAction(action1); contextMenu->addAction(action2); connect(ui->tableWidget, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(slotShowContextMenu(const QPoint &))); connect(action1, SIGNAL(triggered()), this, SLOT(actionSlot1())); connect(action2, SIGNAL(triggered()), this, SLOT(actionSlot2()));}void MainWindow::slotShowContextMenu(const QPoint &pos){ QTableWidgetItem *item; item = ui->tableWidget->itemAt(pos); if(!item) return; for (int i = 0; i < contextMenu->actions().size(); i++) contextMenu->actions().at(i)->setData(QVariant(ui->tableWidget->column(item))); contextMenu->exec(QCursor::pos()); // обязательно в конце функции}void MainWindow::actionSlot1(){ QAction* action = qobject_cast< QAction* >( sender() ); qDebug() << "action 2, column" << action->data().toInt();}void MainWindow::actionSlot2(){ QAction* action = qobject_cast< QAction* >( sender() ); qDebug() << "action 2, column" << action->data().toInt();}