qt设置tablewidget颜色、添加选择框、添加按钮和进度条

添加选择框
在代码中设置tablewidget的样式表

    setStyleSheet(
                "QTableWidget{ color:black; \
                                 background-color:rgb(224,224,224);\
                                 selection-color:rgb(0, 0, 0); \
                                 selection-background-color:rgb(	100,149,237);\
                                 border:0px;\
                                 font: 8pt 'Microsoft YaHei' ;}"
                "QHeaderView::section:horizontal{ 	/*设置标题(水平的)*/\
                                border: 1px solid rgb(255, 255, 255); 	/*白色间隔*/\
                                border - bottom: 0px;/*下边框不需要颜色*/\
                                color: rgb(2, 65, 132);\
                                background: rgb(	100,149,237);\
                                padding - left: 2px;\
                                min - width:60px;}");

设置表格,添加选择框


     //设置列数
     ui->tableWidget->setColumnCount(3);
     //设置行数
     ui->tableWidget->setRowCount(3);
     //设置整行选中
     ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
     //表头标题
     QStringList headerText;
     headerText<<"序  号"<<"名  称"<<"选  择";
     ui->tableWidget->setHorizontalHeaderLabels(headerText);
     //设置列宽
     ui->tableWidget->setColumnWidth(0,ui->tableWidget->width()/3);
     ui->tableWidget->setColumnWidth(1,ui->tableWidget->width()/3);
     ui->tableWidget->setColumnWidth(2,ui->tableWidget->width()/3);
     //去除垂直表头
     ui->tableWidget->verticalHeader()->setVisible(false);
     //去除选中虚线框
     ui->tableWidget->setFocusPolicy(Qt::NoFocus);
     //禁止编辑
     ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
     //添加项
     for (int i=0; i<3; i++) {
         ui->tableWidget->setItem(i,0,new QTableWidgetItem(QString::number(i+1)));
         ui->tableWidget->setItem(i,1,new QTableWidgetItem("aaa"));
         //添加选择框
         QTableWidgetItem *check = new QTableWidgetItem();
         check->setCheckState(Qt::Unchecked);
         ui->tableWidget->setItem(i, 2, check);
         //元素居中
         ui->tableWidget->item(i,0)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
         ui->tableWidget->item(i,1)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
         ui->tableWidget->item(i,2)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);

     }

cellClicked事件响应,当点击表格项,对复选框进行选中和取消选择

void MainWindow::on_tableWidget_cellClicked(int row, int column)
{
    //判断选择状态
    if(ui->tableWidget->item(row,2)->checkState() == Qt::Checked){
        //设置选择状态
        ui->tableWidget->item(row,2)->setCheckState(Qt::Unchecked);
    }else{
        ui->tableWidget->item(row,2)->setCheckState(Qt::Checked);
    }

}

在这里插入图片描述
添加进度条和按钮
设置表格


    //设置列数
    ui->tableWidget->setColumnCount(3);
    //设置行数
    ui->tableWidget->setRowCount(2);
    //设置整行选中
    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
    //表头标题
    QStringList headerText;
    headerText<<"序  号"<<"按  钮"<<"进度条";
    ui->tableWidget->setHorizontalHeaderLabels(headerText);
    //设置列宽
    ui->tableWidget->setColumnWidth(0,ui->tableWidget->width()/3);
    ui->tableWidget->setColumnWidth(1,ui->tableWidget->width()/3);
    ui->tableWidget->setColumnWidth(2,ui->tableWidget->width()/3);
    //去除水平表头
    ui->tableWidget->verticalHeader()->setVisible(false);
    //去除选中虚线框
    ui->tableWidget->setFocusPolicy(Qt::NoFocus);
    //禁止编辑
    ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

    //添加控件
    QPushButton *button0 = new QPushButton("按钮0");
    QPushButton *button1 = new QPushButton("按钮1");
    m_pProgress0 = new QProgressBar();
    m_pProgress1 = new QProgressBar();
    ui->tableWidget->setCellWidget(0,1,button0);
    ui->tableWidget->setCellWidget(0,2,m_pProgress0);
    ui->tableWidget->setCellWidget(1,1,button1);
    ui->tableWidget->setCellWidget(1,2,m_pProgress1);
    //添加项
    for (int i=0; i<2; i++) {
        ui->tableWidget->setItem(i,0,new QTableWidgetItem(QString::number(i+1)));
        //元素居中
        ui->tableWidget->item(i,0)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
    }

建立按钮和处理函数的信号槽连接,让按钮点击,进度条移动

    //建立信号槽连接
    connect(button0,SIGNAL(clicked()),this,SLOT(progress0()));
    connect(button1,SIGNAL(clicked()),this,SLOT(progress1()));

槽函数和进度条控件

private slots:
    void progress0();
    void progress1();
private:
    Ui::MainWindow *ui;
    QProgressBar *m_pProgress0;
    QProgressBar *m_pProgress1;

void MainWindow::progress0(){
    m_pProgress0->setValue(m_pProgress0->value()+10);
}
void MainWindow::progress1(){

    m_pProgress1->setValue(m_pProgress1->value()+10);
}

在这里插入图片描述
项目下载
https://download.csdn.net/download/m0_60352504/87582612

要将QTTableWidget中的某一列设置为下拉设置默认值,可以通过自定义QComboBox委托实现。下面是一个示例代码: ```python from PyQt5.QtWidgets import QComboBox, QTableWidgetItem, QTableWidget, QApplication, QWidget, QHBoxLayout, QTableWidgetItem, QStyledItemDelegate class ComboBoxDelegate(QStyledItemDelegate): def __init__(self, choices=[], parent=None): super().__init__(parent) self.items = choices def createEditor(self, parent, option, index): editor = QComboBox(parent) editor.addItems(self.items) return editor def setEditorData(self, editor, index): value = index.data() editor.setCurrentIndex(editor.findText(value)) def setModelData(self, editor, model, index): value = editor.currentText() model.setData(index, value, 0) class MyTableWidget(QTableWidget): def __init__(self, parent=None): super().__init__(parent) self.setColumnCount(2) self.setHorizontalHeaderLabels(['Name', 'Gender']) self.setItemDelegateForColumn(1, ComboBoxDelegate(["Male", "Female"], self)) self.setRowCount(1) self.setItem(0, 0, QTableWidgetItem("Tom")) self.setItem(0, 1, QTableWidgetItem("Male")) if __name__ == '__main__': app = QApplication([]) widget = MyTableWidget() widget.show() app.exec_() ``` 在上述代码中,我们首先定义了一个自定义的QStyledItemDelegate,它继承自QStyledItemDelegate,并重写了createEditor、setEditorData和setModelData方法,分别用于创建下拉设置下拉的默认值和将下拉的值更新到数据模型中。 然后,在MyTableWidget中,我们将第二列设置为ComboBoxDelegate,并将其选项设置为["Male", "Female"],这样就将第二列设置为了下拉,并且默认值为"Male"。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百口可乐__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值