请教QT 如何实现控件批量 *** 作

请教QT 如何实现控件批量 *** 作,第1张

方案:(以tablewidget为例,UI中有名称为tablewidget_1到tablewidget_10的10个tablewidget)

自然想到的是一个一个的 *** 作,对它们的属性进行修改、设置,虽然可以实现,但是工作量太大

QList<QTableWidget > tablewidgetlist = this->findChildren<QTableWidget>(); //可以得到页面内所有的tablewidget,但没有按顺序存储在tablewidgetlist中,因此想要按顺序控制有些难度

QList<QTableWidget > tablewidgetlist = tablewidgetlist<<uitableWidget_1<<uitableWidget_2<<uitableWidget_3<<uitableWidget_4<<uitableWidget_5<<uitableWidget_6 <<uitableWidget_7<<uitableWidget_8<<uitableWidget_9<<uitableWidget_10; 使用时只须用tablewidgetlistat(i)就可以实现调用,如果要修改可tablewidgetlist[i]

table_widget->setColumnCount(4); //设置列数

table_widget->horizontalHeader()->setDefaultSectionSize(150);

table_widget->horizontalHeader()->setClickable(false); //设置表头不可点击(默认点击后进行排序)

//设置表头内容

QStringList header;

header<<tr("name")<<tr("last modify time")<<tr("type")<<tr("size");

table_widget->setHorizontalHeaderLabels(header);

//设置表头字体加粗

QFont font = this->horizontalHeader()->font();

fontsetBold(true);

table_widget->horizontalHeader()->setFont(font);

table_widget->horizontalHeader()->setStretchLastSection(true); //设置充满表宽度

table_widget->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);

table_widget->verticalHeader()->setDefaultSectionSize(10); //设置行高

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

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

table_widget->verticalHeader()->setVisible(false); //设置垂直头不可见

table_widget->setSelectionMode(QAbstractItemView::ExtendedSelection); //可多选(Ctrl、Shift、 Ctrl+A都可以)

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

table_widget->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置不可编辑

table_widget->horizontalHeader()->resizeSection(0,150); //设置表头第一列的宽度为150

table_widget->horizontalHeader()->setFixedHeight(25); //设置表头的高度

table_widget->setStyleSheet("selection-background-color:lightblue;"); //设置选中背景色

table_widget->horizontalHeader()->setStyleSheet("QHeaderView::section{background:skyblue;}"); //设置表头背景色

//设置水平、垂直滚动条样式

table_widget->horizontalScrollBar()->setStyleSheet("QScrollBar{background:transparent; height:10px;}"

"QScrollBar::handle{background:lightgray; border:2px solid transparent; border-radius:5px;}"

"QScrollBar::handle:hover{background:gray;}"

"QScrollBar::sub-line{background:transparent;}"

"QScrollBar::add-line{background:transparent;}");

table_widget->verticalScrollBar()->setStyleSheet("QScrollBar{background:transparent; width: 10px;}"

"QScrollBar::handle{background:lightgray; border:2px solid transparent; border-radius:5px;}"

"QScrollBar::handle:hover{background:gray;}"

"QScrollBar::sub-line{background:transparent;}"

"QScrollBar::add-line{background:transparent;}");

void QTableWidget::currentCellChanged ( int currentRow, int currentColumn, int previousRow, int previousColumn ) [signal]

用这个信号可以判断出,currentRow表示现在的行,previousRow表示上次的行;

如果你只要行改变事件,不要列改变的事件,可在slot函数中作如下判断即可:

if(currentRow ! = previousRow)

{

//todo

}

以上就是关于请教QT 如何实现控件批量 *** 作全部的内容,包括:请教QT 如何实现控件批量 *** 作、MFC中list control的表头该如何设置,那些语句应该加在哪个函数里、tablewidget 中有一高亮行,我重新用鼠标点了另一行,然后新的一行改变为高亮, 那么,高亮行改变的信号是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9822054.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存