• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    5年前 (2013-12-23)  QT |   3 条评论  31 
    文章评分 0 次,平均分 0.0

    描述

    该例子项目主要是应用QStackedWidget,QStackedWidget对一组页面进行管理,可以每次显示一个页面。
    分页是从0开始,如果要使某个页面可见,调用函数setCurrentIndex(int)来设置。
    页号的获取,可以通过indexOf来获取子窗口部件的页号。
    创建一个QStackedWidget后,通过addWidget()来添加控件到该布局管理器,使用方法同其他布局管理器。

    应用

    一般用于安装软件时选项设置或者一些配置页面。

    详细阅读

    代码中使用了一个QListWidget,为一个列表管理器,其中需要添加QListWidgetItem项,可以通过如下函数获取当前某Item所在行号,current为QListWidgetItem*。

    contentsWidget->row(current)

    选择不同的Item,会触信号

    SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)

    该信号对应的槽函数,完成页面的切换,实际上调用函数setCurrentIndex来根据页号显示页面。

    void ConfigDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous)
    {
        if (!current)
            current = previous;
    
        pagesWidget->setCurrentIndex(contentsWidget->row(current));
    }
    

    其他

    已经定义如下两个数据成员

    QListWidget *contentsWidget;
    QStackedWidget *pagesWidget;

    1.为了设置QListWidget中的项以图片模式显示,需要使用如下代码设置

    contentsWidget->setViewMode(QListView::IconMode);

    2.设置Item是否可以自由移动,Static意味着Item不能移动,Free意味着能拖动和释放到任何地方,Snap意味着能拖动和释放Items,但是仅仅在gridSize属性指定的范围内。

    contentsWidget->setMovement(QListView::Static);

    3.设置QListWidget当前的Item

    contentsWidget->setCurrentRow(0);

    4.其他占位控件,addStretch增加可伸缩占位,其中1为伸缩因子。addSpacing为不可伸缩占位。

        mainLayout->addStretch(1);
        mainLayout->addSpacing(12);

    5.QListWidget中的选择项被改变后,将会发送事件currentItemChanged。

        connect(contentsWidget,
                SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),
                this, SLOT(changePage(QListWidgetItem*,QListWidgetItem*)));
     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/2858.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享