各位大佬,请问有没有碰到在QTableWidget右键菜单时,异常退出并且菜单也没有出现呢?
如下是我的代码,还请各位大佬指点一下到底哪里错了,在此不胜感激!
myWidget::myWidget(QWidget *parent)
: QWidget(parent)
{
m_pTableWidget = NULL;
initUi();
}
void myWidget::initUi()
{
m_pTableWidget = new QTableWidget(this);
m_pTableWidget->resize(this->width()*90/100, this->height()*45/100);
m_pTableWidget->move(this->width()*5/100, this->height()*10/100);
//设置表格属性
m_pTableWidget->setColumnCount(4);
m_pTableWidget->horizontalHeader()->setVisible(false);
m_pTableWidget->verticalHeader()->setVisible(false);
m_pTableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
m_pTableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
m_pTableWidget->horizontalHeader()->setStretchLastSection(true);
m_pTableWidget->verticalHeader()->setDefaultSectionSize(10);
m_pTableWidget->setFrameShape(QFrame::NoFrame);
m_pTableWidget->setFocusPolicy(Qt::NoFocus);
m_pTableWidget->setShowGrid(false);
m_pTableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
m_pTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
m_pTableWidget->setStyleSheet("selection-background-color:lightblue;"); //設置選中背景色
m_pTableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background:skyblue;}"); //設置表頭背景色
m_pTableWidget->horizontalHeader()->setHighlightSections(false);
m_pTableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//自适应无效
//m_pTableWidget->setItemDelegate(new myItemDelegate2(0));
this->stackUnder(m_pTableWidget);
m_pTableWidget->setColumnCount(4);
m_pTableWidget->setRowCount(2);
for (int row = 2; row < m_pTableWidget->rowCount(); ++row)//隐藏2行后的行
m_pTableWidget->setRowHidden(row, true);
QFont font;
font.setFamily("SimHei");
font.setPixelSize(14);
font.setBold(false);
QTableWidgetItem *pTitleText = new QTableWidgetItem;
pTitleText->setFont(font);
pTitleText->setText(TABLE_ENCRYPT_TIP_INFO);
m_pTableWidget->setSpan(0, 0, 2, 4);
m_pTableWidget->setItem(0, 0, pTitleText);
connect(m_pTableWidget, SIGNAL(itemDoubleClicked(QTableWidgetItem *)), this, SLOT(slotItemDoubleClicked(QTableWidgetItem*)));
m_pMainLayout = new QVBoxLayout;//(this);
m_pMainLayout->addWidget(m_pTableWidget);
setLayout(m_pMainLayout);
this->m_pTableWidget->setAcceptDrops(false);
this->setAcceptDrops(true);
//创建快捷键菜单:此处添加会点击右键,出现异常退出。
this->m_pTableWidget->setContextMenuPolicy(Qt::CustomContextMenu);
m_pMenu = new QMenu();//(this);
connect(this, &myWidget::customContextMenuRequested, this, &myWidget::slotCustomContextMenuRequested);
}
void myWidget::slotCustomContextMenuRequested(const QPoint &pos)
{
initAction();
m_pMenu->exec(mapToGlobal(pos));
}
void myWidget::initAction()
{
QAction *actPast = new QAction("粘贴");
m_pMenu->addAction(actPast);
connect(actPast, SIGNAL(triggered()), this, SLOT(slotActionPast()));
m_pMenu->addSeparator();
}