Qt中如何在tableWidget中添加按钮,不用ui界面 40C

我现在创建了一个mainwindow,然后希望能够在这个窗口中创建一个tableWidget
并在每一行的最后添加一个按钮,用代码怎么实现,以及槽函数写在什么位置,
需要在.h文件中写什么,在cpp文件中写什么

6个回答

Widget::Widget(QWidget parent) :
QWidget(parent)
{
QHBoxLayout
mainLayout = new QHBoxLayout(this);
QTableWidget* tab = new QTableWidget(this);
mainLayout->addWidget(tab);
QStringList list;
list << "col1"<<"col2"<<"col3";
tab->setVerticalHeaderLabels(list);
tab->setColumnCount(3);
tab->insertRow(tab->rowCount());
QPushButton* btn = new QPushButton("btn_1");
tab->setCellWidget(0,2,btn);

connect(btn,SIGNAL(clicked(bool)),this,SLOT(slot_btn_clicked()));

}

Widget::~Widget()
{
}

void Widget::slot_btn_clicked()
{
QMessageBox::information(this,"information","btn_1 clicked");
}

.cpp中的代码
int size = 5;//根据实际需求
QTableWidget *mTableWidget = new QTableWidget(this);
mTableWidget->setRowCount(size);
mTableWidget->setColumnCount(3);
mTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
mTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);

QStringList header;
header << "1" << "2" << "button";
mTableWidget->setHorizontalHeaderLabels(header);

for (int i = 0; i < size; i++)
{
    QPushButton *btn = new QPushButton(QString("%1").arg(i), this);
    mTableWidget->setCellWidget(i, 2, btn);
    connect(btn,&QPushButton::clicked,this,&ocx_Desktop::onBtnClicked);
}
layout->addWidget(mTableWidget);

void ocx_Desktop::onBtnClicked()

{
QPushButton * senderObj = qobject_cast(sender());
QString text = senderObj->text();//识别按钮信号,text为btn上的字符
}

.h文件
private slots:
void onBtnClicked();

![图片说明](https://img-ask.csdn.net/upload/201808/03/1533291150_628031.png)

//在第6列放置”编辑”按钮
QPushButton editButton = new QPushButton(ui.tableWidget_1);
editButton->setText(QString::fromLocal8Bit(""编辑));
ui.tableWidget_1->setCellWidget(i, 5, (QWidget
)editButton);
connect(editButton, SIGNAL(clicked()), this, SLOT(FUN1()));

//在槽函数中判断是哪一行的按钮
void FUN()
{
QPushButton editButton = (QPushButton)sender();
for (int i = 0; i < ui.tableWidget_1->rowCount(); i++)
{
QPushButton editButton1 = (QPushButton)ui.tableWidget_1->cellWidget(i, 5);
if (editButton == editButton1)
{
//do something
}
}

}


tableWidget.setCellWidget( int , int , QPushButton)用来设置按钮。至于信号槽函数还是写在构造函数里。

connect( QPushButton,SIGNAL(clicked()), this, SLOT());

你去debug文件里找一下ui_xxx.h文件,这个文件是系统根据你的UI界面自动生成的,反过来也就是说,如果你写的代码和这个文件一样,就可以生成对应的UI界面

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐