先上效果:
头文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void putItemToTextEdit();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
源文件
#include "widget.h"
#include "ui_widget.h"
#include <QStandardItemModel>
#include <QStandardItem>
#include <QPushButton>
#include <QModelIndex>
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowTitle("QTableWigdget插入PushButton按键");
QStandardItemModel *model = new QStandardItemModel();
ui->tableView->setModel(model);
for (int i =0;i<10;i++)
{
QStandardItem *PItem = NULL;
PItem = new QStandardItem("Item"+QString::number(i+1));
model->setItem(i,0,PItem);
PItem = new QStandardItem("Item"+QString::number(i+2));
model->setItem(i,1,PItem);
PItem = new QStandardItem("Item"+QString::number(i+3));
model->setItem(i,2,PItem);
PItem = new QStandardItem();
model->setItem(i,3,PItem);
QPushButton *pBtn = new QPushButton("按键"+QString::number(i+1));
connect(pBtn,&QPushButton::clicked,this,&Widget::putItemToTextEdit);
QModelIndex index =model->index(i,3);
ui->tableView->setIndexWidget(index,pBtn);
}
}
Widget::~Widget()
{
delete ui;
}
void Widget::putItemToTextEdit()
{
ui->textEdit->clear();
QPushButton* btn = qobject_cast<QPushButton*>(sender());
QString text = btn->text();
QStringList strlist = text.split("按键");
qDebug()<<strlist;
bool ok;
QString str = strlist.last();
QString strThree = "Item"+str+"\n"+"Item"+QString::number(str.toInt(&ok)+1)+"\n"+
"Item"+QString::number(str.toInt(&ok)+2);
ui->textEdit->setFont(QFont("微软雅黑",16));
ui->textEdit->append(strThree);
}