点击ListWidget 的 item 匹配TableWidget相同数据 将表头标记为红色

Posted jiangsion

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了点击ListWidget 的 item 匹配TableWidget相同数据 将表头标记为红色相关的知识,希望对你有一定的参考价值。

一、用Qt Creator创建test工程

  ①  ui文件

    

  ② .h文件  

    

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
class QListWidgetItem;

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
public slots:
    void slotTest(QListWidgetItem *item);

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

  ③ cpp

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

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(ui->listWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(slotTest(QListWidgetItem*)));

    ui->tableWidget->setRowCount(4);
    ui->tableWidget->setColumnCount(4);
    ui->tableWidget->setItem(0,0, new QTableWidgetItem("a"));
    ui->tableWidget->setItem(1,0, new QTableWidgetItem("b"));
    ui->tableWidget->setItem(2,0, new QTableWidgetItem("c"));
    ui->tableWidget->setItem(3,0, new QTableWidgetItem("d"));
}

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


void MainWindow::slotTest(QListWidgetItem *item)
{
    for(int row = 0; row < ui->tableWidget->rowCount();row++)
    {
        QTableWidgetItem *itemData = ui->tableWidget->item(row,0);
        if(item->text() == itemData->text())
        {
            QTableWidgetItem *header = ui->tableWidget->verticalHeaderItem(row);
            if(header == NULL)
            {
                qDebug() << "111111";
            }
            header->setTextColor(QColor(255,0,0));
        }
    }
}

  ④运行程序

  

  问题: 点击ListWidget的Item匹配右边TableWidget数据导致程序崩溃

  原因:ui->tableWidget->verticalHeaderItem(row)返回值为NULL

  解决办法:重新设置表头,如下图代码:

  

 

  

以上是关于点击ListWidget 的 item 匹配TableWidget相同数据 将表头标记为红色的主要内容,如果未能解决你的问题,请参考以下文章

Qt程序怎么实现选中ListWidget中的某一行为默认选中状态啊?在线 急

PyQt5 唯一点击的子项

PyQt5中如何获取Listwidget点击项的文本?

vue点击tab跳转页面,给点击的tab添加样式,且解决刷新以后点击的tab样式消失问题

listwidget 实现横向流式排布关键以及过滤注意事项

QT如何实现自定义下拉列表