QTableView::verticalScrollBar()->setSliderPosition(); //设置当前滑动条的位置
QTableView::verticalScrollBar()->maximum() //滑动条能移动的最大位置
QTableView::verticalScrollBar()->value() //获得当前滑动条的位置
#include<QScrollBar>//滑动条
#include<QTableView>
int Widget::pageCount(QTableView *p)//QTableView 总页数
{
if(p == NULL) return -1
int rowCount = p->model()->rowCount()
int rowHeight = p->rowHeight(0)
int tableViewHeight = p->height()
int rowCountPerPage = tableViewHeight/rowHeight-1//每页显示行数
int ret = rowCount/rowCountPerPage
int tem = rowCount%rowCountPerPage
if (tem != 0) ret++
return ret
}
void Widget::pageTo(QTableView *p, int pageNO)//翻到指定页
{
if(p == NULL) return
int maxPage = pageCount(p)
if(pageNO >maxPage) return
int rowCount = p->model()->rowCount()
int rowHeight = p->rowHeight(0)
int tableViewHeight = p->height()
int rowCountPerPage = tableViewHeight/rowHeight-1 //每页显示行数
int canNotViewCount = rowCount-rowCountPerPage //看不见的行数
if(canNotViewCount == 0) return
int maxValue = p->verticalScrollBar()->maximum() // 当前SCROLLER最大显示值
if(maxValue == 0) return
int pageValue = (maxValue*rowCountPerPage)/canNotViewCount
p->verticalScrollBar()->setSliderPosition(pageValue*(pageNO-1))
}
void Widget::pageUp(QTableView *p)//上翻
{
if(p == NULL) return
int rowCount = p->model()->rowCount()
int rowHeight = p->rowHeight(0)
int tableViewHeight = p->height()
int rowCountPerPage = tableViewHeight/rowHeight-1 //每页显示行数
int canNotViewCount = rowCount-rowCountPerPage //看不见的行数
if(canNotViewCount == 0) return
int maxValue = p->verticalScrollBar()->maximum() // 当前SCROLLER最大显示值
if(maxValue == 0) return
int pageValue = (maxValue*rowCountPerPage)/canNotViewCount
int nCurScroller = p->verticalScrollBar()->value() //获得当前scroller值
if(nCurScroller>0)
p->verticalScrollBar()->setSliderPosition(nCurScroller-pageValue)
else
{
// if(isLoop == TRUE)
p->verticalScrollBar()->setSliderPosition(maxValue)
}
}
void Widget::pageDown(QTableView *p)//下翻
{
if(p == NULL) return
int rowCount = p->model()->rowCount()
int rowHeight = p->rowHeight(0)
int tableViewHeight = p->height()
int rowCountPerPage = tableViewHeight/rowHeight-1 //每页显示行数
int canNotViewCount = rowCount-rowCountPerPage //看不见的行数
if(canNotViewCount == 0)
return
int maxValue = p->verticalScrollBar()->maximum() // 当前SCROLLER最大显示值
if(maxValue == 0)
return
int pageValue = (maxValue*rowCountPerPage)/canNotViewCount
int nCurScroller = p->verticalScrollBar()->value() //获得当前scroller值
if(nCurScroller
p->verticalScrollBar()->setSliderPosition(nCurScroller+pageValue)
else
{
// if(isLoop == TRUE)
p->verticalScrollBar()->setSliderPosition(0)
}
}
void Widget::pageHome(QTableView *p)//首页
{
if(p == NULL) return
int maxValue = p->verticalScrollBar()->maximum()// 当前SCROLLER最大显示值
if(maxValue == 0) return
p->verticalScrollBar()->setSliderPosition(0)
}
void Widget::pageEnd(QTableView *p)//末页
{
if(p == NULL) return
int maxValue = p->verticalScrollBar()->maximum()// 当前SCROLLER最大显示值
if(maxValue == 0) return
p->verticalScrollBar()->setSliderPosition(maxValue)
}
EDD:
在QT UI 界面实现设置相应的按钮点击实现就可。
QTableView和QTableWidget翻页功能实现-阿里云开发者社区
https://blog.csdn.net/liuguangzhou123/article/details/8109089
1 定义一个按钮[cpp] view plain copy
QPushButton * pBtn = new QPushButton()
2 链接信号与曹
[cpp] view plain copy
connect(pBtn, SIGNAL(clicked()), this, SLOT(OnBtnClicked()))
3 按钮添加到单元格内
[cpp] view plain copy
table->setCellWidget(0,0,pBtn)//如果点击按钮出现崩溃现象,就添加QTableWidgetItem 到按钮的那个单元格
4 实现按钮的事件
[cpp] view plain copy
void myPic::OnBtnClicked(void)
{
QPushButton * senderObj=qobject_cast<QPushButton *>(sender())
if(senderObj == 0)
{
return
}
先创建一个QWidget,然后对这个QWidget设置布局,然后往布局里添加你的按钮,最后把这个QWidget设置到item上嗯哈。
QWidget *container = new QWidget
container->addLayOut(xxxx)
container->addWidget(xxxWidget)
item->setItemWidget(containter)
//这个container完全可以用Desinger去做哈。高效快捷~
QTableWidget * tvDecoderItemArea = new QTableWidget(this)
tvDecoderItemArea->setObjectName("tvDecoderItemArea")
tvDecoderItemArea->setColumnCount(1)
tvDecoderItemArea->horizontalHeader()->setVisible(false)
tvDecoderItemArea->verticalHeader()->setVisible(false)
tvDecoderItemArea->horizontalHeader()->setStretchLastSection(true)
int index = tvDecoderItemArea->rowCount()
tvDecoderItemArea->setRowCount(index+1)
QPushButton* pItem = new QPushButton(tr("text_%1").arg(index+1))
tvDecoderItemArea->setCellWidget(index,0,pItem)
QListWidget::setItemWidget
QWidget是一个包裹,它占据Item的所有空间
可能是你的布局没有调整边距所致,在你这两个布局上设置setContentsMargins(0, 0, 0, 0)
似乎是使用QStyledItemDelegate这个来实现?求教如何使用?有没有例子?
使用QListWidget::setItemWidget时,如何对item进行布局?现在控件加进去了,但是都重叠在一起了。
这个QWidget在Item里面的位置如何调整?
,,这样那我把所有的东西,包括item的text、ICON都放入这个QWidget了?
listWidget->setResizeMode(QListView::Adjust)
listWidget->setGridSize(QSize(165,176))
listWidget->setIconSize(QSize(158,117))
listWidget->setViewMode(QListView::IconMode)
listWidget->setWordWrap(true)
listWidget->setAutoScroll(true)
mItem = new QListWidgetItem(listWidget)
mLayoutWidget = new QWidget(listWidget)
mVLayout = new QVBoxLayout(mLayoutWidget)
mHLayout = new QHBoxLayout()
QLabel *showPic = new QLabel(mLayoutWidget)
QPixmap pixMap(QString(":/b_1243700182001.jpg"))
showPic->setPixmap(pixMap)
mVLayout->addWidget(showPic)
QLabel *showName = new QLabel(text,mLayoutWidget)
mVLayout->addWidget(showName)
mDeleteBt = new QPushButton(mLayoutWidget)
mDetailBt = new QPushButton(mLayoutWidget)
mUploadBt = new QPushButton(mLayoutWidget)
mHLayout->addWidget(mDeleteBt)
mHLayout->addWidget(mDetailBt)
mHLayout->addWidget(mUploadBt)
mVLayout->addLayout(mHLayout)
mLayoutWidget->setLayout(mVLayout)
mLayoutWidget->show()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)