专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > QT开发

QTableWidget执行setCellWidget后,引入的排序有关问题

发布时间:2010-05-30 21:35:34 文章来源:www.iduyao.cn 采编人员:星星草
QTableWidget执行setCellWidget后,引入的排序问题?
如果表格项是下面的这种普通的子项填入方式,那么,其排序是没有问题的。

如果,每个子项成了QLabel,且以setCellWidget方式填入。那么,排序出现失效问题。

这当如何解决呢?

C/C++ code
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , m_pTable1(NULL)
{
    m_pTable1 = new QTableWidget(this);
    m_pTable1->setGeometry(10, 50, 800, 200);
    m_pTable1->setRowCount(3);
    m_pTable1->setColumnCount(3);

    QTableWidgetItem *pTableWidgetHeader0 = new QTableWidgetItem("name");
    QTableWidgetItem *pTableWidgetItem00 = new QTableWidgetItem("chenxueli");
    QTableWidgetItem *pTableWidgetItem10 = new QTableWidgetItem("chenqiuyue");
    QTableWidgetItem *pTableWidgetItem20 = new QTableWidgetItem("cundaofan");
    m_pTable1->setHorizontalHeaderItem(0, pTableWidgetHeader0);
    m_pTable1->setItem(0, 0, pTableWidgetItem00);
    m_pTable1->setItem(1, 0, pTableWidgetItem10);
    m_pTable1->setItem(2, 0, pTableWidgetItem20);

    QTableWidgetItem *pTableWidgetHeader1 = new QTableWidgetItem("content");
    QTableWidgetItem *pTableWidgetItem01 = new QTableWidgetItem("Hello!");
    QTableWidgetItem *pTableWidgetItem11 = new QTableWidgetItem("How are you?");
    QTableWidgetItem *pTableWidgetItem21 = new QTableWidgetItem("Welcome");
    m_pTable1->setHorizontalHeaderItem(1, pTableWidgetHeader1);
    m_pTable1->setItem(0, 1, pTableWidgetItem01);
    m_pTable1->setItem(1, 1, pTableWidgetItem11);
    m_pTable1->setItem(2, 1, pTableWidgetItem21);

    QTableWidgetItem *pTableWidgetHeader2 = new QTableWidgetItem("status");
    QTableWidgetItem *pTableWidgetItem02 = new QTableWidgetItem("success");
    QTableWidgetItem *pTableWidgetItem12 = new QTableWidgetItem("success");
    QTableWidgetItem *pTableWidgetItem22 = new QTableWidgetItem("fail");
    m_pTable1->setHorizontalHeaderItem(2, pTableWidgetHeader2);
    m_pTable1->setItem(0, 2, pTableWidgetItem02);
    m_pTable1->setItem(1, 2, pTableWidgetItem12);
    m_pTable1->setItem(2, 2, pTableWidgetItem22);

    m_pTable1->horizontalHeaderItem(0)->setTextAlignment(Qt::AlignLeft);
    m_pTable1->horizontalHeaderItem(1)->setTextAlignment(Qt::AlignHCenter);
    m_pTable1->horizontalHeaderItem(2)->setTextAlignment(Qt::AlignRight);

    m_pTable1->setSortingEnabled(true);
    m_pTable1->setWordWrap(true);

    resize(900, 300);
}


------解决方案--------------------
我猜楼主是为了实现改变cell的背景之类的效果吧。
可以找个变通的方法,添加两列,一列是QLabel,一列是QLabel的值。其中QLabel值的列隐藏。排序触发QLabel值的列排序。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: