方案:(以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 中有一高亮行,我重新用鼠标点了另一行,然后新的一行改变为高亮, 那么,高亮行改变的信号是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)