動態設置QTableView某一行的背景色

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>
#include <QStandardItemModel>
namespace Ui {
    class MainWindow;
}

class MainWindow : public QWidget {
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

public:
    void start();
    void showColor();

private:
    Ui::MainWindow *ui;
    QStandardItemModel *model;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

#include <unistd.h>
//#include <thread>
#include <QtConcurrent/QtConcurrent>

MainWindow::MainWindow(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MainWindow) {
    ui->setupUi(this);
    model = new QStandardItemModel(this);
    model->setColumnCount(2);
    model->setHeaderData(0, Qt::Horizontal, tr("貨品名稱"));
    model->setHeaderData(1, Qt::Horizontal, tr("貨品類型"));
    ui->tableView->setModel(model);
    ui->tableView->setColumnWidth(0, 100);
    ui->tableView->setColumnWidth(1, 100);
    QList<QStandardItem *> itemrow1{new QStandardItem("aaa"), new QStandardItem("111")};
    model->appendRow(itemrow1);
    QList<QStandardItem *> itemrow2{new QStandardItem("bbb"), new QStandardItem("222")};
    model->appendRow(itemrow2);
    QList<QStandardItem *> itemrow3{new QStandardItem("ccc"), new QStandardItem("333")};
    model->appendRow(itemrow3);
    QList<QStandardItem *> itemrow4{new QStandardItem("ddd"), new QStandardItem("444")};
    model->appendRow(itemrow4);
    QList<QStandardItem *> itemrow5{new QStandardItem("eee"), new QStandardItem("555")};
    model->appendRow(itemrow5);
    QList<QStandardItem *> itemrow6{new QStandardItem("fff"), new QStandardItem("666")};
    model->appendRow(itemrow6);
    QList<QStandardItem *> itemrow7{new QStandardItem("ggg"), new QStandardItem("777")};
    model->appendRow(itemrow7);
    QList<QStandardItem *> itemrow8{new QStandardItem("hhh"), new QStandardItem("888")};
    model->appendRow(itemrow8);
}

void MainWindow::start() {
    QtConcurrent::run(this, &MainWindow::showColor);
}

void MainWindow::showColor() {
    while (true) {
        for (int i = 0; i < 8; ++i) {
        	model->item(i, 0)->setBackground(QColor(Qt::green));
            model->item(i, 1)->setBackground(QColor(Qt::green));
            //        sleep(1);
            std::this_thread::sleep_for(std::chrono::seconds(1));
            qDebug() << "sleep for 1 s";
        }
        for (int j = 7; j >= 0; --j) {
         	model->item(j, 0)->setBackground(QColor(Qt::red));
            model->item(j, 1)->setBackground(QColor(Qt::red));
            //        sleep(1);
            std::this_thread::sleep_for(std::chrono::seconds(1));
            qDebug() << "sleep for 1 s";
        }
        return;
    }
}

MainWindow::~MainWindow() {
    delete ui;
}

main.cpp

#include <QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    MainWindow window;
    window.show();
    window.start();
    return a.exec();
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章