mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"
#include "QCheckBox"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->tableWidget,SIGNAL(cellClicked(int,int)),this,SLOT(changeTest(int, int)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::changeTest(int row, int col)
{
//QMessageBox::about(0,QString::number(row),QString::number(col));
qDebug()<<row<<col;
}//
void MainWindow::on_pushButton_clicked()
{
QString m=ui->lineEdit->text();
int z=m.toInt(0,10);
ui->tableWidget->setRowCount(z);
QString str;
QString numStr;
pBoxGrp = new QButtonGroup(this);
for(int m=0;m<z;m++)
{
// ui->tableWidget->setCellWidget(m,1,e);
numStr.clear();
numStr.clear();
numStr.setNum(m);
str = "chkbox" +numStr ;
QCheckBox *pBox =new QCheckBox(str);
pBox->setObjectName(str);
pBoxGrp->addButton(pBox,m);
pBoxGrp->setExclusive(false);
connect(pBoxGrp,SIGNAL(buttonClicked(int)),this,SLOT(slotBoxStateChanged(int)));
ui->tableWidget->setCellWidget(m,1,pBox);
}
}//当选中checke是第一列分别显示出相应的行号 没选中什么也不显示
void MainWindow::slotBoxStateChanged(int id)
{
QAbstractButton *pButton =pBoxGrp->button(id);
QCheckBox *pBox =(QCheckBox*)pButton;
if(pBox->checkState()==Qt::Checked)
{
QString str;
int nNum =id +1;
str.setNum(nNum);
ui->tableWidget->setItem(id,0,new QTableWidgetItem(str));
}
else
{
ui->tableWidget->takeItem(id,0);
}
}
对应.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "QCheckBox"
#include "QButtonGroup"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
QButtonGroup *pBoxGrp;
private slots:
void on_pushButton_clicked();
void changeTest(int,int);
void slotBoxStateChanged(int);
};
class chekcbox :public QCheckBox{
public :
int m;
};
#endif // MAINWINDOW_H
分享到:
相关推荐
1. **创建复选框**:为每个需要显示复选框的单元格创建一个新的`QTableWidgetItem`实例,并将其类型设置为`TypeCheckBox`,即`Qt::CheckBox`。这可以通过`QTableWidgetItem(QTableWidgetItem::Type)`构造函数完成。 ...
本篇文章将深入探讨QTableWidget的使用,包括其基本概念、功能、以及如何在实际项目中应用。 ### 一、QTableWidget基础 1. **构造与初始化**:QTableWidget通过指定行数和列数来创建。例如,`QTableWidget(int ...
然后,在设置表头时,我们将这个自定义的QTableWidgetItem实例作为表头的item。这样,用户在表头点击复选框,就能影响到所有行的相应列。 接下来,我们需要在表格类对象中实现`setCellWidget`方法来在每行的第一列...
1. **创建QTableWidget或QTableView**:首先,我们需要实例化一个`QTableWidget`或`QTableView`,并设置相应的行数和列数。 ```python from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem ...
通过阅读和学习这个示例代码,你可以更好地理解如何在实际项目中应用这些技术。记得仔细查看类定义、事件处理函数以及与模型的数据同步逻辑,这些都是实现自定义表头功能的关键部分。 总的来说,自定义`QTableView`...
使用QSpinBox,同样在`createEditor`方法中实例化,并设置其最小值和最大值。`setEditorData`用于设置初始值,`setModelData`用于获取用户调整后的数值。 5. 配置QHeaderView: 需要为QTableView的每一列设置...
5. 在`QTableWidget`的构造函数中,将表头视图替换为`CheckableHeaderView`实例,并连接信号和槽,使得点击CheckBox时能够触发相应的动作。 代码示例(简化版): ```cpp class CheckableHeaderView : public ...
最后,将`CheckBoxDelegate`设置为`QTableView`的代理,并创建一个`CheckBoxTableModel`实例,填充数据,然后将其设置为`QTableView`的模型。这样,`QTableView`的指定列就会显示`QCheckBox`,用户可以进行选择。 `...
在实际开发中,为了提高代码的可重用性和可维护性,可以将自定义委托封装成独立的类,通过注入模型和视图实例来实例化和使用。同时,可以利用Qt的信号与槽机制,确保视图、模型和业务逻辑之间的通信顺畅。 总结来说...
QT TableWidget是Qt库中的一个核心组件,常用于在GUI应用程序中展示表格数据。这个压缩包文件"QT tablewidget样式与添加按钮进度条选择框.7z"显然包含了一些示例,展示了如何自定义TableWidget的样式,以及如何在...