zoukankan      html  css  js  c++  java
  • QTableWidget的使用详细介绍和美工总结(转)

    基本外观设置

    FriendTable->setFrameShape(QFrame::NoFrame);  //设置边框

    FriendTable->setHorizontalHeaderLabels(HeadList);  设置表头

    FriendTable->setSelectionMode(QAbstractItemView::SingleSelection);   设置选择的模式为单选择

    FriendTable->setSelectionBehavior(QAbstractItemView::SelectRows);    设置选择行为时每次选择一行

    FriendTable->setShowGrid(false);   设置不显示格子线

    FriendTable->setFont(font);   设置字体

    FriendTable->hideColumn(0);    //隐藏用户指定的某一列

    设置表单背景或透明

    QPalette pal = musicTable->palette();
    pal.setBrush(this->backgroundRole(),QBrush(QPixmap("images/background.png")) );
        musicTable->setPalette( pal );

    设置它的背景图片,也可以将QBrush初始化为QColor来设置背景颜色

    QPalette pll = musicTable->palette();

    pll.setBrush(QPalette::Base,QBrush(QColor(255,255,255,0)));

    musicTable->setPalette(pll);  //和QTextEdit一样,都可以使用样式表QPalette来修改它的背景颜色和背景图片,这里我们把刷子设置为全透明的,就可以是透明的


    在QTableWidget列表中添加图片的方法   
    QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes"));
    cubesHeaderItem->setIcon(QIcon(QPixmap("1.png")));
    cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);
    musicTable->setItem(1,1,cubesHeaderItem);   //在第一行第一列中显示图片

    *******************表头的属性修改****************

    musicTable->horizontalHeader()->resizeSection(0,150);  //修改表头第一列的宽度为150

    musicTable->horizontalHeader()->setFixedHeight(25);  //修改表头合适的高度

    musicTable->horizontalHeader()->setStyleSheet("QHeaderView::section {background-color:lightblue;color: black;padding-left: 4px;border: 1px solid #6c6c6c;}");    //设置表头字体,颜色,模式

    FriendTable->verticalHeader()->setStyleSheet("QHeaderView::section {  background-color:skyblue;color: black;padding-left: 4px;border: 1px solid #6c6c6c}");   //设置纵列的边框项的字体颜色模式等

    注:QTableView的列头和行头使用其内含子控件QHeaderView体现的,故我们可以在 .qss 美工文件中如下写到:

    [css] view plaincopy
     
    1. QTableWidget QHeaderView::section   
    2. {  
    3.     background-color:lightblue;  
    4.     colorblack;  
    5.     padding-left4px;  
    6.     border1px solid #6c6c6c  
    7. }  

    上述用到CSS和QSS的语法 ,指定作用的对象为QTableWidget 的 QHeaderView子控件;

    定义一个后缀名为.qss的文件,添加到资源文件中,然后通过如下代码使其生效:

    [cpp] view plaincopy
     
    1. QFile beauty("beauty.qss");  
    2.    beauty.open(QFile::ReadOnly);  
    3.    qApp->setStyleSheet(beauty.readAll());  
    4.    beauty.close();  
    [cpp] view plaincopy
     
    1. QFile beauty("beauty.qss");  
    2.    beauty.open(QFile::ReadOnly);  
    3.    qApp->setStyleSheet(beauty.readAll());  
    4.    beauty.close();  


    本来想找找QT里有没有现成的API的,结果没有找到,只能自己写了。
    实现也好实现,QTableWidgetItem里面有修改背景色的API,直接调用,然后用循环控制隔行换色即可。
    实现代码:
    void testtt::changeColor(QTableWidget *tablewidget){
    for (int i = 0;i < tablewidget->rowCount();i++)
    {
          if (i % 2 == 0)
          {
                for (int j = 0;j < tablewidget->columnCount();j++)
               {
                     QTableWidgetItem *item = tablewidget->item(i,j);
                     if (item)
                    {
                         const QColor color = QColor(252,222,156);
                          item->setBackgroundColor(color);
                     }
               }
         }
    }

    使用

    向表中插入一项

      QTableWidgetItem *num=new QTableWidgetItem(QTableWidgetItem::Type);
                num->setCheckState(Qt::Unchecked);   //加入复选框
                num->setIcon(QIcon("images/fetion.png"));  //加入ICon
                num->setText(InfoList.at(i).name);
                num->setFont(font);
                num->setTextColor(color);
                num->setFlags(num->flags() ^ Qt::ItemIsEditable);

                int currentRow=FriendTable->rowCount();  //插入到最后
                FriendTable->insertRow(currentRow);
                FriendTable->setItem(currentRow,0,num);  //插入该Item
                FriendTable->selectRow(0);   选择第一行

    删除某一行 列

    FriendTable->removeRow(row);

    FriendTable->removeColumn (column );

    信号

    void cellActivated ( int row, int column )
    void cellChanged ( int row, int column )
    void cellClicked ( int row, int column )
    void cellDoubleClicked ( int row, int column )
    void cellEntered ( int row, int column )
    void cellPressed ( int row, int column )
    void currentCellChanged ( int currentRow, int currentColumn, int previousRow, int previousColumn )
    void currentItemChanged ( QTableWidgetItem * current, QTableWidgetItem * previous )  改变Item了
    void itemActivated ( QTableWidgetItem * item )
    void itemChanged ( QTableWidgetItem * item )
    void itemClicked ( QTableWidgetItem * item )
    void itemDoubleClicked ( QTableWidgetItem * item )
    void itemEntered ( QTableWidgetItem * item )
    void itemPressed ( QTableWidgetItem * item )
    void itemSelectionChanged ()

    上述大部分代码转自:http://blog.csdn.net/xie376450483/article/details/5816950# 感谢~~~

    自己使用QTableWidget时的一些用法的总结:

    1、关于QTableWidget的头单元的宽度,将第一列设置为hint默认宽度

    [cpp] view plaincopy
     
    1. ui->twOrderDish->resizeColumnToContents(0);  

    2、将QTableWidget的头单元最后补全:

    [cpp] view plaincopy
     
    1. ui->twOrderDish->horizontalHeader()->setStretchLastSection(true);  

    说明:该代码是实现将header最后的空间补全,仅仅是通过延伸最后一个单元实现的,而没有单元格平分;幸好有如下代码。

    3、将QTableWidget单元格平分:

    [cpp] view plaincopy
     
    1. ui->twOrderDish->horizontalHeader()->setResizeMode(QHeaderView::Stretch);  

    使用这段代码即可实现将单元格平分了,对于行高的设置和这个设置类似,看如下代码:

    [cpp] view plaincopy
     
    1. ui->twOrderDish->verticalHeader()->setResizeMode(QHeaderView::Stretch);  
    [cpp] view plaincopy
     
      1. ui->twOrderDish->horizontalHeader()->setStretchLastSection(true);

    转自:http://blog.csdn.net/leo115/article/details/7665090

  • 相关阅读:
    URLProtocol服务协议
    ODBC、OLEDB和ADO之间的关系 ,以及性能比较
    如何在VS2015查看C#界面窗体里的控件层次
    SpeechVoiceSpeakFlags枚举类型的详细解释
    SQL中遇到多条相同内容只取一条的最简单实现方法
    flink elasticsearch sink table 忽略部分字段开发
    flink elasticsearch source table 集成elasticsearch-hadoop connector开发
    记一次python 协程给合多线程死锁问题
    kubernetes gitlab runner java maven ci/cd 整体方案示例
    某云elasticsearch节点失效,手动重置primary,迁移分区
  • 原文地址:https://www.cnblogs.com/veins/p/3148491.html
Copyright © 2011-2022 走看看