我正在尝试在QTabWidget中创建QScrollArea。
版本:
首先,我创建了QTabWidget:
tabWidget = new QTabWidget(this);
tabWidget->setGeometry(10, 15, 1200, 665);
tabWidget->setStyleSheet("font-size : 15px");
tab1Content = new QWidget(tabWidget); tabWidget->addTab(tab1Content, "tab1");
tab2Content = new QWidget(tabWidget); tabWidget->addTab(tab2Content, "tab2");
tab3Content = new QWidget(tabWidget); tabWidget->addTab(tab3Content, "tab3");
tab4Content = new QWidget(tabWidget); tabWidget->addTab(tab4Content, "tab4");
我可以添加
tabWidget->setEnable(true);
对于所有选项卡,0 <= i <tabWidget.count
tabWidget->setTabEnabled(i, true);
单击以更改选项卡不起作用:https : //i.stack.imgur.com/8r1Jg.png
奇怪的事情:颜色看起来像启用的,但是我只能用←→更改选项卡,并且当我通过单击tabWidget之外的其他东西失去tabWidget焦点时,我无法重新获得焦点。
所以我创建了一个临时按钮来更改标签,并像这样链接到tabWidget:
connect(changeTab, &QPushButton::clicked, [&]() {onChangeTab();});
void MainWindow::onChangeTab() {
tabWidget->setCurrentIndex(tabWidget->currentIndex() >= tabWidget->count() - 1 ? 0 : tabWidget->currentIndex() + 1);
}
它运作良好。
因此,我开始创建QScrollArea:首先,它不起作用,因此我尝试在互联网上找到某事:QScrollArea无法与QWidget和QVBoxLayout一起正常工作
我的结果:https : //i.stack.imgur.com/jvVol.png
我无法单击单个按钮,也无法滚动...而且,如果我尝试强制像这样滚动,则不会滚动
scrollArea->scroll(0, 50);
最后,没有无限循环或死锁的东西,因为这个被诅咒的tabWidget和滚动区域周围的所有东西都能正常工作。
我不知道如果有人做过这样的实验,为什么这些对象“不回答”,您能帮我吗?
提前非常感谢您。
试试这个代码
#include "widget.h"
#include<QTabWidget>
#include<QLabel>
#include<QVBoxLayout>
#include<QScrollArea>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
QTabWidget *tabWidget = new QTabWidget(this);
tabWidget->setGeometry(10, 15, 1200, 665);
tabWidget->setStyleSheet("font-size : 15px");
QWidget * tab1Content = new QWidget;
//preparing tab1content ( e.g.)
QVBoxLayout * verticalLayout = new QVBoxLayout;
// adding items to vertical layout
for(int i=0;i<100;i++)
verticalLayout->addWidget(new QLabel(QString::number(i)));
// set this vertical layout inside tab1content
tab1Content->setLayout(verticalLayout);
// create new scroll area ...
QScrollArea * scroll = new QScrollArea;
// ... and add tab1content in scroll area
scroll->setWidget(tab1Content);
// and finally add scroll area inside tabwidget
tabWidget->addTab(scroll,"tab1");
QWidget * tab2Content = new QWidget; tabWidget->addTab(tab2Content, "tab2");
QWidget * tab3Content = new QWidget; tabWidget->addTab(tab3Content, "tab3");
QWidget * tab4Content = new QWidget; tabWidget->addTab(tab4Content, "tab4");
}
Widget::~Widget()
{
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句