只能使用标准的数据模型,快速开发QCombox以及业
分类:澳门新萄京

 那是本身在品种实战中的个人计算,写的皇皇,有个别东西也不料定标准,有个别是温馨测度的,还愿意各位多多照顾,多多研商。

QTableWidget是QT程序中常用的来得数据表格的上空,很临近于VC、C#中的DataGrid。提起QTableWidget,就非得讲一下它跟QTabelView的界别了。QTableWidget是QTableView的子类,首要的区分是QTableView能够行使自定义的数据模型来展现内容(相当于先要通过setModel来绑定数据源卡塔尔国,而QTableWidget则只好动用标准的数据模型,何况其单元格数据是QTableWidgetItem的对象来完毕的(也等于无需数据源,将每种单元格内的消息填好就可以卡塔尔国。那首要反映在QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数形成了私有。使用QTableWidget就离不开QTableWidgetItem。QTableWidgetItem用来代表表格中的三个单元格,正个表格都急需用各种单元格塑造起来。

记录下行使QListView遭受的各个难题

 关于QCombox假设无需自定义,其实写UI是很简短的。

 

QListView能够用来以列表的样式显得数据,在Qt中动用model/View构造来管理数据与视图的涉及,model担负数据的存取,数据的交互作用通过delegate来完毕。

开创实例:QComboBox*  m_pMicrophoneCombox = new QComboBox;

[cpp] view plaincopy

累计数据模型

QT提供了有的现成的models用于拍卖数据项:
QStringListModel 用于存款和储蓄简单的QString列表。
QStandardItemModel 管理复杂的树型构造数据项,每项都可以满含自由数据。
QDirModel 提供当羊眼半夏件系统中的文件与目录消息。
QSqlQueryModel, QSqlTableModel,QSqlRelationTableModel用来拜候数据库。

接收Qt自带的模型类QStandardItemModel就能够。模型中的每一个数据项都有一个与之对应的role来积存某生机勃勃类数据。需求存取自定义数据能够选取UserRole,UserRole 1...

对此自定义数据类型,倘诺要接纳QVariant,就不得不运用Q_DECLARE_METATYPE注册。

struct ItemData{
    QString name;
    QString tel;
};

Q_DECLARE_METATYPE(ItemData)

本人是用的QSS去的写样式,这里用了叁个命名函数:m_pMicrophoneCombox->setObjectName("DeviceCombox");

 

纯净数据存取

//存
Item->setData(itemStatus,Qt::UserRole);  // 单一存取

//取
ItemStatus status = (ItemStatus)(index.data(Qt::UserRole).toInt());

若果是用的setstylesheet直接在代码里去写就好了。

  1. #include <QtGui/QApplication>  
  2. #include <QTableWidget>  
  3. #include <QTableWidgetItem>  
  4.   
  5. int main(int argc, char *只能使用标准的数据模型,快速开发QCombox以及业务样式自定义。argv[])  
  6. {  
  7.     QApplication a(argc, argv);  
  8.     QTableWidget *tableWidget = new QTableWidget(10,5卡塔尔; // 布局了一个QTableWidget的靶子,况且安装为10行,5列  
  9.     //    也可用下边包车型大巴章程组织QTableWidget对象  
  10.     //    QTableWidget *tableWidget = new QTableWidget;  
  11.     //    tableWidget->setRowCount(10卡塔尔(قطر‎;     //设置行数为10  
  12.     //    tableWidget->setColumnCount(5卡塔尔(英语:State of Qatar);   //设置列数为5  
  13.     tableWidget->setWindowTitle("QTableWidget & Item");  
  14.     tableWidget->resize(350, 200卡塔尔(英语:State of Qatar);  //设置表格  
  15.     QStringList header;  
  16.     header<<"Month"<<"Description";  
  17.     tableWidget->setHorizontalHeaderLabels(header);  
  18.     tableWidget->setItem(0,0,new QTableWidgetItem("Jan"));  
  19.     tableWidget->setItem(1,0,new QTableWidgetItem("Feb"));  
  20.     tableWidget->setItem(2,0,new QTableWidgetItem("Mar"));  
  21.   
  22.     tableWidget->setItem(0,1,new QTableWidgetItem(QIcon("images/IED.png"), "Jan's month"));  
  23.     tableWidget->setItem(1,1,new QTableWidgetItem(QIcon("images/IED.png"), "Feb's month"));  
  24.     tableWidget->setItem(2,1,new QTableWidgetItem(QIcon("images/IED.png"), "Mar's month"));  
  25.     tableWidget->show();  
  26.   
  27.     return a.exec();  
  28. }  

布局体数据存取

//存
Item->setData(QVariant::fromValue(itemData),Qt::UserRole 1);//整体存取

//取
QVariant variant = index.data(Qt::UserRole 1);
ItemData data = variant.value<ItemData>();

上边说多少个性子函数:

图片 1

自定义delegate

模型的相互影响和制图通过自定义delegate来达成,一时没用到交互作用,先说下item的绘图。世襲了QStyledItemDelegate后,重写paint函数管理item的体制,以致sizeHint函数重回item的分寸:

m_pMicrophoneCombox->setMaxVisibleItems(2卡塔尔;//最大可以见到区域为展现两条。

 

绘制item

void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{


    if(index.isValid())
    {
        painter->save();

        ItemStatus status = (ItemStatus)(index.data(Qt::UserRole).toInt());

        QVariant variant = index.data(Qt::UserRole 1);
        ItemData data = variant.value<ItemData>();

        QStyleOptionViewItem viewOption(option);//用来在视图中画一个item

        QRectF rect;
        rect.setX(option.rect.x());
        rect.setY(option.rect.y());
        rect.setWidth( option.rect.width()-1);
        rect.setHeight(option.rect.height()-1);

        //QPainterPath画圆角矩形
        const qreal radius = 7;
        QPainterPath path;
        path.moveTo(rect.topRight() - QPointF(radius, 0));
        path.lineTo(rect.topLeft()   QPointF(radius, 0));
        path.quadTo(rect.topLeft(), rect.topLeft()   QPointF(0, radius));
        path.lineTo(rect.bottomLeft()   QPointF(0, -radius));
        path.quadTo(rect.bottomLeft(), rect.bottomLeft()   QPointF(radius, 0));
        path.lineTo(rect.bottomRight() - QPointF(radius, 0));
        path.quadTo(rect.bottomRight(), rect.bottomRight()   QPointF(0, -radius));
        path.lineTo(rect.topRight()   QPointF(0, radius));
        path.quadTo(rect.topRight(), rect.topRight()   QPointF(-radius, -0));

        if(option.state.testFlag(QStyle::State_Selected))
        {
            painter->setPen(QPen(Qt::blue));
            painter->setBrush(QColor(229, 241, 255));
            painter->drawPath(path);
        }
        else if(option.state.testFlag(QStyle::State_MouseOver))
        {
            painter->setPen(QPen(Qt::green));
            painter->setBrush(Qt::NoBrush);
            painter->drawPath(path);
        }
        else{
            painter->setPen(QPen(Qt::gray));
            painter->setBrush(Qt::NoBrush);
            painter->drawPath(path);
        }

        //绘制数据位置
        QRect NameRect = QRect(rect.left()  10, rect.top() 10, rect.width()-30, 20);
        QRect circle = QRect(NameRect.right(), rect.top() 10, 10, 10);
        QRect telRect = QRect(rect.left()  10, rect.bottom()-25, rect.width()-10, 20);


        switch (status) {
        case S_RED:
            painter->setBrush(Qt::red);
            painter->setPen(QPen(Qt::red));
            break;
        case S_BLUE:
            painter->setBrush(Qt::blue);
            painter->setPen(QPen(Qt::blue));
            break;
        case S_YELLOW:
            painter->setBrush(Qt::yellow);
            painter->setPen(QPen(Qt::yellow));
            break;
        }

        painter->drawEllipse(circle);     //画圆圈

        painter->setPen(QPen(Qt::black));
        painter->setFont(QFont("Times", 12, QFont::Bold));
        painter->drawText(NameRect,Qt::AlignLeft,data.name); //绘制名字

        painter->setPen(QPen(Qt::gray));
        painter->setFont(QFont("Times", 10));
        painter->drawText(telRect,Qt::AlignLeft,data.tel); //绘制电话

        painter->restore();
    }
}

QSize ItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    return QSize(160, 60);
}

m_pMicrophoneCombox->setEditable(false); //设置QComboBox可编辑。

风华正茂. 对QTableWidget本人的意义贯彻

设置item区别意况下的体制

在paint函数中,还是能够收获当前item的气象,并设置不一致的体制:

 if(option.state.testFlag(QStyle::State_Selected)) //选中状态
        {
            painter->setPen(QPen(Qt::blue));
            painter->setBrush(QColor(229, 241, 255));
            painter->drawPath(path);
        }
        else if(option.state.testFlag(QStyle::State_MouseOver))//鼠标划过状态
        {
            painter->setPen(QPen(Qt::green));
            painter->setBrush(Qt::NoBrush);
            painter->drawPath(path);
        }
        else{
            painter->setPen(QPen(Qt::gray));
            painter->setBrush(Qt::NoBrush);
            painter->drawPath(path);
        }

安装好模型后,再对QListView进行下属性设置:

    ui->listView->setItemDelegate(m_delegate);       //为视图设置委托
    ui->listView->setSpacing(15);                   //为视图设置控件间距
    ui->listView->setModel(m_model);                  //为委托设置模型
    ui->listView->setViewMode(QListView::IconMode); //设置Item图标显示
    ui->listView->setDragEnabled(false); 

模型的数量和出示都管理好后,运转效果如下:

listview展示

m_pMicrophoneCombox->setFocusPolicy(Qt::NoFocus卡塔尔;//设置QCombox未有毛病。

  1. 将表格形成幸免编辑

过滤item

Qt中提供了一个有益管理模型排序和过滤的类QSortFilterProxyModel,通过他得以极其常有益的拍卖我们的model。将QListView显示的model设置成代理模型:

    ui->listView->setItemDelegate(m_delegate);       //为视图设置委托
    ui->listView->setSpacing(15);                   //为视图设置控件间距
    m_proxyModel = new QSortFilterProxyModel(ui->listView);
    m_proxyModel->setSourceModel(m_model);
    m_proxyModel->setFilterRole(Qt::UserRole);
    m_proxyModel->setDynamicSortFilter(true);
    ui->listView->setModel(m_proxyModel);                  //为委托设置模型
    ui->listView->setViewMode(QListView::IconMode); //设置Item图标显示
    ui->listView->setDragEnabled(false);            //控件不允许拖动

其中,m_proxyModel->setFilterRole(Qt::UserRole);安装依照模型的某风流罗曼蒂克项数据来拍卖模型的过滤。proxyModel能够设置过滤的艺术,依据QString只怕正则表明式来过滤:

m_proxyModel->setFilterFixedString(QString::number(S_RED));//根据字符串过滤
m_proxyModel->setFilterRegExp(QRegExp("^[0|2]$")); //根据正则表达式过滤

过滤模型

m_pMicrophoneCombox->setLineEdit(edit卡塔尔(英语:State of Qatar);//edit是三个lineedit,正是说QCombox的LineEdit能够自定义,而QT的源码中,顶部也是叁个LineEdit。

在暗中认可情形下,表格里的字符是能够改正的,举个例子双击二个单元格,就可以修正原本的内容,若是想防止用户的这种操作,让那么些表格对客商只读,可以那样:

得到选中item

对此列表中item的操作,可以是在delegate中管理相互事件,也得以通过QListView获取到独具入选item的QModelIndex,然后对模型自身进行矫正。这里作者选拔的前者:

QModelIndexList modelIndexList = ui->listView->selectionModel()->selectedIndexes();

m_pMicrophoneCombox->setCurrentIndex(0卡塔尔(英语:State of Qatar); // 设置当前选中的目录。

 tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

安装多选

将QListView的selectionBehavior设置成MultiSelection即可。

对于多选的时候,模型的改换有多少个坑。在安装了代办模型后,由于开启了动态排序格局,要是改造代理模型的数据,在率先个item修正数据后大概就不在当前过滤模型中,会被过滤掉,后面的item的QModelIndex就能转移,以致持续的修正退步。

dynamicSortFilter : bool
This property holds whether the proxy model is dynamically sorted and filtered whenever the contents of the source model change.
Note that you should not update the source model through the proxy model when dynamicSortFilter is true. For instance, if you set the proxy model on a QComboBox, then using functions that update the model, e.g., addItem(), will not work as expected. An alternative is to set dynamicSortFilter to false and call sort() after adding items to the QComboBox.
The default value is true.

有七个艺术管理那一个坑,一是不校订代理模型,改过源模型的数量。二是在改正模型数据的时候关闭代理模型的动态排序功效。

m_pMicrophoneCombox->setCurrentText(TR_TALK_DEVICE_COMBOX卡塔尔;//设置QCombox当前的来得text,小编是用宏封装的,满意中期改过。

 

改进数据

QModelIndexList sourceIndexList;
    foreach (QModelIndex modelIndex, modelIndexList){
        sourceIndexList<<m_proxyModel->mapToSource(modelIndex); //获取源model的modelIndex
    }

//    g_proxyModel->setDynamicSortFilter(false);
    foreach (QModelIndex sourceIndex, sourceIndexList){
        ItemStatus status = (ItemStatus)(sourceIndex.data(Qt::UserRole).toInt());
        qDebug() << "Index : " << sourceIndex.row();

        switch (status) {
            case S_RED:
                redNum--;
                break;
            case S_BLUE:
                blueNum--;
                break;
            case S_YELLOW:
                yellowNum--;
                break;
        }

        status = S_RED;
        redNum  ;

        m_model->setData(sourceIndex,status,Qt::UserRole);
    }
//    g_proxyModel->setDynamicSortFilter(true);

弄完大约是酱紫的:

末尾效果

Demo在这里:->Github链接地址。

m_pMicrophoneCombox->setItemData(i, list[i]卡塔尔国;//QCombox也足以团结传入二个链表,并且本人定义索引,当然,你想传一条数据,而且本身定义索引。

QAbstractItemView.NoEditTriggers是QAbstractItemView.EditTrigger枚举中的三个,都是触发订正单元格内容的原则:

QListWidget* pListWidget = new QListWidget();//new一个widget的实例。

 

m_pMicrophoneCombox->setModel(pListWidget->model());//塞进widget的model。
m_pMicrophoneCombox->setView(pListWidget);//将widget装进Combox。

QAbstractItemView.NoEditTriggers

0

No editing possible. 不能对表格内容进行修改

QAbstractItemView.CurrentChanged

1

Editing start whenever current item changes.任何时候都能对单元格修改

QAbstractItemView.DoubleClicked

2

Editing starts when an item is double clicked.双击单元格

QAbstractItemView.SelectedClicked

4

Editing starts when clicking on an already selected item.单击已选中的内容

QAbstractItemView.EditKeyPressed

8

Editing starts when the platform edit key has been pressed over an item.

QAbstractItemView.AnyKeyPressed

16

Editing starts when any key is pressed over an item.按下任意键就能修改

QAbstractItemView.AllEditTriggers

31

Editing starts for all above actions.以上条件全包括

m_pMicrophoneCombox->count(卡塔尔(قطر‎;//用来总括combox下拉窗体的朗朗上口。

 

m_pMicrophoneCombox->addItems(list卡塔尔(英语:State of Qatar);//插入二个列表。

 

m_pMicrophoneCombox->addItem("111"卡塔尔国;//插入单条数据。

  1. 安装表格为整行接受

如上函数基本满意专门的职业要求,假使交互作用的体裁相比复杂,须要自定义样式,那样的话,大家就要协和去写每叁个item的体裁。

tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows卡塔尔国;  //整行选中的方式

浅析下QCombox的源码,其实他的贯彻正是多个LineEdit和一个ListWidget,知道啊这一个就足以慈祥去重新写二个ListWidget。

QAbstractItemView.SelectionBehavior枚举还犹如下类型

Item *pItem = new Item(卡塔尔(قطر‎; //item是一心一德自定义写的结构,每二个item的自定义样式就足以写在此个里面。
QListWidgetItem *pListWidgetItem = new QListWidgetItem(list[i],pListWidget卡塔尔国;//小编是将链表的数据塞进QCombox里。
pItem->setItemData(list[i]卡塔尔(英语:State of Qatar);//给每二个item塞进多少
pListWidget->setItemWidget(pListWidgetItem, pItem卡塔尔(قطر‎;//关于这一个函数笔者的明亮是:在下边黄金年代层上面再覆盖少年老成层。

 

下一场在QSS的样式里写hover、pressed鼠标事件,就有鼠标的并行。

Constant

Value

Description

QAbstractItemView.SelectItems

0

Selecting single items.选中单个单元格

QAbstractItemView.SelectRows

1

Selecting only rows.选中一行

QAbstractItemView.SelectColumns

2

Selecting only columns.选中一列

这种艺术就算平价,然则数量不与UI分离,都搅在一团。

 

拔尖的方案就是:

 

  既然QT的combox扶持listwidget,那么全部都用自身定制的listwidget。

3.单个选大壮七个选中的安装:

 在itemwidget里写构造,本人搞一个delegate,在代理去管理UI,数据在model里去操作,这里的model可能要和睦包装大器晚成层,满意combox的相互必要。

tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection卡塔尔(قطر‎;  //设置为能够选中八个目的

pListWidget->m_pModel->Append(list[i]卡塔尔(英语:State of Qatar);//将每一个数目塞进model,剩下的多寡操作就由model去管理。

该函数的参数还足以是:

新鲜注意的是:这时候,qt原生的那一个接口都不见到成效了,举例:setcurrenttext还应该有setcurrentindex,查看源码开采都以依照索引来操控,而实质上,大家用本人的model

QAbstractItemView.NoSelection      不可能选拔

去管理的多少,并不会调换三个目录来满意combox管理的数据,所以这一个对外的接口大概也要和煦去封装出来,能够说基本上是割舍了combox,本身去组装LineEdit和ListWidget。

QAbstractItemView.SingleSelection  选中单个指标

实则代码量是不菲的,企务能够去封装成控件,方便开垦。

QAbstractItemView.MultiSelection    选中五个目的

    最终,假设大神们有更加好的措施,款待商量。

QAbstractItemView.ExtendedSelection   QAbstractItemView.ContiguousSelection 的界别不醒目,主要成效是常规情形下是单选,但按下Ctrl或Shift键后,能够多选

 

 

 

  1. 报表表头的展现与潜伏

对此水平或垂直方法的表头,能够用以下办法张开 隐瞒/展现 的安装:

[cpp] view plaincopy

 

  1. tableWidget->verticalHeader(卡塔尔国->setVisible(false卡塔尔(قطر‎;   //蒙蔽列表头  
  2. tableWidget->horizontalHeader(卡塔尔国->setVisible(false卡塔尔; //隐蔽行表头  

注意:需要 #include <QHeaderView>

 

  1. 对表头文字的字体、颜色进行安装

[cpp] view plaincopy

 

  1. QTableWidgetItem *columnHeaderItem0 = tableWidget->horizontalHeaderItem(0卡塔尔(قطر‎; //获得水平方向表头的Item对象  
  2. columnHeaderItem0->setFont(QFont("Helvetica"卡塔尔卡塔尔国; //设置字体  
  3. columnHeaderItem0->setBackgroundColor(QColor(0,60,10卡塔尔(英语:State of Qatar)卡塔尔(قطر‎; //设置单元格背景颜色  
  4. columnHeaderItem0->setTextColor(QColor(200,111,30卡塔尔卡塔尔(英语:State of Qatar); //设置文字颜色  

注意:需要 #include <QHeaderView>

 

  1. 在单元格里投入控件:

QTableWidget不止允许把文字加到单元格,还允许把控件也置于单元格中。比如,把一个下拉框加入单元格,能够这么做:

[cpp] view plaincopy

 

  1. QComboBox *comBox = new QComboBox();  
  2. comBox->addItem("Y");  
  3. comBox->addItem("N");  
  4. tableWidget->setCellWidget(0,2,comBox);  

读取QComboBox 信息:

 

[html] view plaincopy

 

  1. QWidget * widget=ui->tableWidget->cellWidget(i,0);//获得widget     
  2. QComboBox *combox=(QComboBox*卡塔尔widget;//强制转变为QComboBox       
  3. QString string=combox->currentText();    
  4. qDebug()<<string;  

 

二. 对单元格的扩充安装

  1. 单元格设置字体颜色和背景颜色 及字体字符

[cpp] view plaincopy

 

  1. QTableWidgetItem *item = new QTableWidgetItem("Apple");  
  2. item->setBackgroundColor(QColor(0,60,10));  
  3. item->setTextColor(QColor(200,111,100));  
  4. item->setFont(QFont("Helvetica"));  
  5. tableWidget->setItem(0,3,item);  

另:假使须求对具有的单元格都应用这种字体,则能够运用  tableWidget->setFont(QFont("Helvetica")卡塔尔(英语:State of Qatar);

  1. 安装单元格内文字的对齐方式

本条比较轻便,使用newItem.setTextAlignment(卡塔尔(英语:State of Qatar)函数就能够,该函数的参数为单元格内的对齐方式,和字符输入顺序是自左相右仍旧自右向左。

水平对齐方式有:

 

Constant Value Description
Qt.AlignLeft 0x0001 Aligns with the left edge.
Qt.AlignRight 0x0002 Aligns with the right edge.
Qt.AlignHCenter 0x0004 Centers horizontally in the available space.
Qt.AlignJustify 0x0008 Justifies the text in the available space.

 

垂直对齐格局:

 

Constant Value Description
Qt.AlignTop 0x0020 Aligns with the top.
Qt.AlignBottom 0x0040 Aligns with the bottom.
Qt.AlignVCenter 0x0080 Centers vertically in the available space.

 

只要三种都要设置,只要用 Qt.AlignHCenter|  Qt.AlignVCenter 的方式即可

 

  1. 联合单元格效果的实现:

tableWidget->setSpan(0, 0, 3, 1)  # 其参数为: 要改成单元格的   1行数  2列数     要统生机勃勃的  3行数  4列数

 

  1. 安装单元格的大大小小

第黄金年代,能够钦定有些行依旧列的高低

[cpp] view plaincopy

 

  1. tableWidget->setColumnWidth(3,200);  
  2. tableWidget->setRowHeight(3,60);  

仍可以将行和列的分寸设为与内容相相配

[cpp] view plaincopy

 

  1. tableWidget->resizeColumnsToContents();  
  2. tableWidget->resizeRowsToContents();  
  1. 获取单击单元格的故事情节

因而兑现 itemClicked (QTableWidgetItem *卡塔尔国复信号的槽函数,就足以获取鼠标单击到的单元格指针,进而获取个中的文字信息

connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(getItem(QTreeWidgetItem*,int)));

//将itemClicked时域信号与函数getItem绑定

6.QTableWidget要调治表格行宽首要涉及以下三个函数

resizeColumnsToContents(卡塔尔国;                      依照内容调度列宽          
resizeColumnToContents(int col卡塔尔国;               依照剧情自动调节给定列宽
horizontalHeader()->setResizeMode````           把给定列设置为给定形式
关键方式有Stretch和Fixed

7.

int row = rowCount();
 removeRow(row卡塔尔;//清除原来就有的行列
 setShowGrid(true卡塔尔(قطر‎;//展现表格线
 verticalHeader(卡塔尔(قطر‎->setVisible(false卡塔尔国;//隐敝侧边垂直
 QHeaderView *headerView = horizontalHeader();
 headerView->setMovable(false卡塔尔;//去除表头的活动
 headerView->resizeSection(0,284卡塔尔(英语:State of Qatar);//设置第一列宽
 headerView->resizeSection(1,127卡塔尔国;//设置第二列宽
 headerView->setResizeMode(QHeaderView::Fixed卡塔尔国;//列表不能够移动
 headerView->setClickable(false卡塔尔(قطر‎;//不响应鼠标单击
 setEditTriggers(QTableWidget::NoEditTriggers卡塔尔国;//无法编辑
 setSelectionBehavior(QTableWidget::SelectRows卡塔尔(英语:State of Qatar);//一次入选生龙活虎行
 setSelectionMode(QAbstractItemView::SingleSelection卡塔尔(قطر‎;//只可以单选
 /*QScrollBar *scrollBar = horizontalScrollBar();
 scrollBar->hide();*/
 setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff卡塔尔(英语:State of Qatar);//去掉水平滚动条
 setVerticalScrollMode(QAbstractItemView::ScrollPerItem卡塔尔(英语:State of Qatar);//垂直滚动条按项运动
 setAutoScroll(false卡塔尔(英语:State of Qatar);//去掉自动滚动

参考:

本文由澳门新萄京发布于澳门新萄京,转载请注明出处:只能使用标准的数据模型,快速开发QCombox以及业

上一篇:DirectSound学习笔记,最简便易行的视音频播放示例 下一篇:没有了
猜你喜欢
热门排行
精彩图文