Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 问题更改选项卡QTabWidget&;qscrollareaqt_C++_Qt - Fatal编程技术网

C++ 问题更改选项卡QTabWidget&;qscrollareaqt

C++ 问题更改选项卡QTabWidget&;qscrollareaqt,c++,qt,C++,Qt,我试图在QTabWidget中创建一个QScrollArea 版本: Qt 5.15.0 Qt creator 4.12.4 MSVC2019 64位 首先,我创建了QTabWidget: tabWidget=新的QTabWidget(此); tabWidget->setGeometry(10、15、1200、665); tabWidget->setStyleSheet(“字体大小:15px”); tab1Content=新的QWidget(tabWidget);tabWidget->add

我试图在QTabWidget中创建一个QScrollArea

版本:

  • Qt 5.15.0
  • Qt creator 4.12.4
  • MSVC2019 64位
首先,我创建了QTabWidget:

tabWidget=新的QTabWidget(此);
tabWidget->setGeometry(10、15、1200、665);
tabWidget->setStyleSheet(“字体大小:15px”);
tab1Content=新的QWidget(tabWidget);tabWidget->addTab(tab1Content,“tab1”);
tab2Content=新的QWidget(tabWidget);tabWidget->addTab(tab2Content,“tab2”);
tab3Content=新的QWidget(tabWidget);tabWidget->addTab(tab3Content,“tab3”);
tab4Content=新的QWidget(tabWidget);tabWidget->addTab(tab4Content,“tab4”);
我可以补充一点

tabWidget->setEnable(true);
对于所有选项卡,0 setTabEnabled(i,true); 单击以更改选项卡不起作用:

奇怪的是:颜色看起来像启用了,但我只能用← → 当我点击tabWidget之外的其他东西而失去tabWidget焦点时,我无法重新获得焦点

因此,我创建了临时按钮来更改选项卡,并链接到tabWidget,如下所示:

connect(changeTab,&QPushButton::clicked,[&](){onChangeTab();});
void主窗口::onChangeTab(){
tabWidget->setCurrentIndex(tabWidget->currentIndex()>=tabWidget->count()-1?0:tabWidget->currentIndex()+1);
}
它工作得很好

因此,我开始创建QScrollArea: 首先,它不起作用,所以我试图在互联网上找到一些东西:

我的结果是:

我不能点击一个按钮,也不能滚动。。。 如果我尝试像这样强制滚动,它不会滚动

滚动区域->滚动(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()
{
}

#包括“widget.h”
#包括
#包括
#包括
#包括
小部件::小部件(QWidget*父部件)
:QWidget(父项)
{
QTabWidget*tabWidget=新的QTabWidget(此);
tabWidget->setGeometry(10、15、1200、665);
tabWidget->setStyleSheet(“字体大小:15px”);
QWidget*tab1Content=新的QWidget;
//准备表1内容(例如)
QVBoxLayout*垂直布局=新的QVBoxLayout;
//向垂直布局添加项目
对于(inti=0;iaddWidget(新的QLabel(QString::number(i)));
//在tab1content内设置此垂直布局
选项卡1内容->设置布局(垂直布局);
//创建新的滚动区域。。。
QScrollArea*滚动=新QScrollArea;
//…并在滚动区域中添加tab1content
滚动->设置小部件(选项卡1内容);
//最后在tabwidget中添加滚动区域
tabWidget->addTab(滚动“tab1”);
QWidget*tab2Content=newqwidget;tabWidget->addTab(tab2Content,“tab2”);
QWidget*tab3Content=newqwidget;tabWidget->addTab(tab3Content,“tab3”);
QWidget*tab4Content=newqwidget;tabWidget->addTab(tab4Content,“tab4”);
}
小部件::~Widget()
{
}
试试这段代码

#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()
{
}

#包括“widget.h”
#包括
#包括
#包括
#包括
小部件::小部件(QWidget*父部件)
:QWidget(父项)
{
QTabWidget*tabWidget=新的QTabWidget(此);
tabWidget->setGeometry(10、15、1200、665);
tabWidget->setStyleSheet(“字体大小:15px”);
QWidget*tab1Content=新的QWidget;
//准备表1内容(例如)
QVBoxLayout*垂直布局=新的QVBoxLayout;
//向垂直布局添加项目
对于(inti=0;iaddWidget(新的QLabel(QString::number(i)));
//在tab1content内设置此垂直布局
选项卡1内容->设置布局(垂直布局);
//创建新的滚动区域。。。
QScrollArea*滚动=新QScrollArea;
//…并在滚动区域中添加tab1content
滚动->设置小部件(选项卡1内容);
//最后在tabwidget中添加滚动区域
tabWidget->addTab(滚动“tab1”);
QWidget*tab2Content=newqwidget;tabWidget->addTab(tab2Content,“tab2”);
QWidget*tab3Content=newqwidget;tabWidget->addTab(tab3Content,“tab3”);
QWidget*tab4Content=newqwidget;tabWidget->addTab(tab4Content,“tab4”);
}
小部件::~Widget()
{
}