点击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

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

  

 

  

转载于:https://www.cnblogs.com/jiangson/p/9043251.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值