Qt5 Ubuntu18 QStackedWidget

       1、在实际项目开发过程遇到,如果通过UI插件的属性设置,通过对默认的两个页面进行提升需要切换操作的对象,如果该对象需要外部接口传入数据,实现界面信息的实时刷新,这样会失败,失败的原因很好理解,就是系统默认对类的操作,而我们外部接口调用需要实例化对象,因此我们外部调用的接口和提升默认的对象,不是同一个对象。

       通过代码实现添加对象,实现多页切换,是可以的,保证我们添加到QStackedWidget里面的对象也是我们外部调用的对象,数据可以相互交互,界面也是想要的显示结果。

       例如我这里创建两个实时刷新的页面对象:            

//切换图或表显示接口
int CRealTimeMonitor::SwitchShowType(EM_SHOW_TYPE eUiType)
{
    static bool bOper =false;
    if(!bOper)
    {
        bOper = true;

        m_crealtimeGraph = new CrealtimeGraph();
        m_crealtimeTable = new CRealtimeTable();
        ui->stackedWidget->addWidget(m_crealtimeTable);
        ui->stackedWidget->addWidget(m_crealtimeGraph);
    }

    if(eUiType == EM_SHOW_TYPE_TABLE)
    {
        ui->stackedWidget->setCurrentIndex(0);
    }
    else
    {
        ui->stackedWidget->setCurrentIndex(1);
    }
    return 0;
}

如果调试过程中出现,切换无效果,不要灰心, 这是因为如果通过拖拽的方式,在主界面上拖拽一个插件QStackedWidget,默认会有两个页面产生,因此我们代码添加两个对象,实际上已经包含四个对象了,因此调用ui->stackedWidget->setCurrentIndex(0)时候,代码逻辑没有问题,只是调用的索引号 0 或1 错了,根据默认顺序应该为3或4 才可以。

我们可以通过下面的代码,获取ui->stackedWidget里面到底包含了几个对象和当前默认的页面序号是多少。

// 切换页面
void MainWindow::switchPage()
{
      int nCount =  ui->stackedWidget->count();
      int nIndex =  ui->stackedWidget->currentIndex();
      // 获取下一个需要显示的页面索引
      ++nIndex;
      // 当需要显示的页面索引大于等于总页面时,切换至首页
      if (nIndex >= nCount)
         nIndex = 0;
     ui->stackedWidget->setCurrentIndex(nIndex);
}  

2、如果对象不存在对外调用接口,简单通过UI界面对stackedWidget属性中的页面设置需要提升的类和引用的头文件即可,对象内部通过按钮或则其他方式实现数据信息更新。

3、stackedWidget 主要接口信息分享

接口
int addWidget(QWidget * widget)
添加页面,并返回页面对应的索引

int count() const
获取页面数量

int currentIndex() const
获取当前页面的索引

QWidget * currentWidget() const
获取当前页面

int indexOf(QWidget * widget) const
获取QWidget页面所对应的索引

int insertWidget(int index, QWidget * widget)
在索引index位置添加页面

void removeWidget(QWidget * widget)
移除QWidget页面,并没有被删除,只是从布局中移动,从而被隐藏。

QWidget * widget(int index) const
获取索引index所对应的页面

信号
void currentChanged(int index)
当前页面发生变化时候发射,index为新的索引值

void widgetRemoved(int index)
页面被移除时候发射,index为页面对应的索引值

共有槽函数
void setCurrentIndex(int index)
设置索引index所在的页面为当前页面

void setCurrentWidget(QWidget * widget)
设置QWidget页面为当前页面

总结
一般情况,常用的两种方式:

根据currentWidget()来判断当前页面,然后通过setCurrentWidget()来设置需要显示的页面。

根据currentIndex()来判断当前页面索引,然后通过setCurrentIndex()来设置需要显示的页面。 

相关推荐

  1. Qt5 Ubuntu18 QStackedWidget

    2024-07-10 11:26:02       11 阅读
  2. Ubuntu18.04 安装 qt 5.15.2

    2024-07-10 11:26:02       42 阅读
  3. Qt QStackedWidget类详细分析

    2024-07-10 11:26:02       16 阅读
  4. Ubuntu下编译Qt5.15源码

    2024-07-10 11:26:02       88 阅读
  5. ubuntu20.04-编译安装Qt5.15.2-C++

    2024-07-10 11:26:02       41 阅读
  6. UBUNTU22 安装QT5.15.2 记录

    2024-07-10 11:26:02       6 阅读
  7. ubuntu18.04安装qt

    2024-07-10 11:26:02       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 11:26:02       4 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 11:26:02       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 11:26:02       4 阅读
  4. Python语言-面向对象

    2024-07-10 11:26:02       4 阅读

热门阅读

  1. WebKit源代码探秘:深入理解其组织结构与组件

    2024-07-10 11:26:02       10 阅读
  2. 【回溯+双指针算法题记录】回文字符串汇总

    2024-07-10 11:26:02       7 阅读
  3. 2288. 价格减免

    2024-07-10 11:26:02       10 阅读
  4. Quartz 介绍

    2024-07-10 11:26:02       6 阅读
  5. Taro自定义实现本地路径转换为文件

    2024-07-10 11:26:02       7 阅读
  6. Python 类与对象:深入理解与应用

    2024-07-10 11:26:02       8 阅读
  7. 20240709每日后端--------Spring Boot的启动流程

    2024-07-10 11:26:02       9 阅读