注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

linux 学习

 
 
 

日志

 
 

【转载】Qt QTabWidget  

2014-03-19 17:19:01|  分类: QT编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本文转载自直到永远《Qt QTabWidget》

这里简单介绍一下QTabWidget的使用。一般分为三步:

1、new 一个QTabWidget;

2、new 几个要向QTabWidget中添加的窗口,注意,这些widget不要指定parent;

3、调用QTabWidget的addTab函数添加页面。

下面作一个简单示例:

//tab1.h

#ifndef TAB1_H

#define TAB1_H
#include <QWidget>

namespace Ui {
class tab1;
}

class tab1 : public QWidget
{
    Q_OBJECT
    
public:
    explicit tab1(QWidget *parent = 0);
    ~tab1();
    
private:
    Ui::tab1 *ui;
};

#endif // TAB1_H
//tab1.cpp
#include "tab1.h"
#include "ui_tab1.h"

tab1::tab1(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::tab1)
{
    ui->setupUi(this);
}

tab1::~tab1()
{
    delete ui;
}


Qt QTabWidget - 直到永远 - 直到永远的博客
 
另外,tab2,tab3与上面基本一样!!

//widget.h

#ifndef WIDGET_H

#define WIDGET_H

#include <QWidget>
class QTabWidget;
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT
    
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    
private:
    Ui::Widget *ui;
    QTabWidget *tabWidget;
};

#endif // WIDGET_H
 
//widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QTabWidget>
#include <QVBoxLayout>
#include <QDebug>
#include "tab1.h"
#include "tab2.h"
#include "tab3.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    tabWidget = new QTabWidget(this);
    tabWidget->move(0,100);
    tabWidget->resize(200,300);//说明tab页面只能显示出tabWidget的大小,多余部分将显示不出来,所以设计时最好一样大小
    tab1 * m_tab1 = new tab1;//注意,这虽然没指定父窗口,但从后面可以看出其父窗口为TabWidget中的qt_tabwidget_stackedwidget
   
 m_tab1->resize(10,300);
    tab2 * m_tab2 = new tab2;
    m_tab2->resize(400,300);
    tab3 * m_tab3 = new tab3;
    m_tab3->resize(400,300);
    tabWidget->addTab(m_tab1,"Tab1");
    tabWidget->addTab(m_tab2,"Tab2");
    tabWidget->addTab(m_tab3,"Tab3");
    tabWidget->setTabEnabled(1,false);
    tabWidget->setTabShape(QTabWidget::Triangular);//设置形状
//    QVBoxLayout *mainLayout = new QVBoxLayout(this);
//    mainLayout->addWidget(tabWidget);
//    setLayout(mainLayout);
    QObjectList objectList = tabWidget->children();
    //遍历其子链表
    /* 打印
     *QStackedWidget(0xc97e788, name = "qt_tabwidget_stackedwidget")

     *QTabBar(0xc97e6c8, name = "qt_tabwidget_tabbar")
    */
    for(QObjectList::iterator it= objectList.begin();it != objectList.end();++it)
    {
        qDebug() << *it<< endl ;
    }
    //从而程序输出打印来看,每个tab页面都有parent,叫qt_tabwidget_stackedwidget
    /*
     *m_tab1 Have Parent "qt_tabwidget_stackedwidget"

     *tab2 Have Parent "qt_tabwidget_stackedwidget"

     *tab3 Have Parent "qt_tabwidget_stackedwidget"
    */
    if(m_tab1->parent() == 0)
        qDebug() << "No Parent" << endl;
    else
        qDebug() << "m_tab1 Have Parent" << m_tab1->parent()->objectName() << endl;

    if(m_tab2->parent() == 0)
        qDebug() << "No Parent" << endl;
    else
        qDebug() << "tab2 Have Parent" << m_tab2->parent()->objectName() << endl;
    if(m_tab3->parent() == 0)
        qDebug() << "No Parent" << endl;
    else
        qDebug() << "tab3 Have Parent" << m_tab3->parent()->objectName() << endl;
}

Widget::~Widget()
{
    delete ui;
}



 

//main.cpp

#include "widget.h"

#include <QApplication>
#include <QTextCodec>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextCodec::setCodecForCStrings( (QTextCodec::codecForName("gbk")));//显示中文
    QTextCodec::setCodecForTr( (QTextCodec::codecForName("gbk")));//显示中文
    QTextCodec::setCodecForLocale((QTextCodec::codecForName("gbk")));
    Widget w;
    w.show();
    
    return a.exec();
}


效果:
Qt QTabWidget - 直到永远 - 直到永远的博客
 

  评论这张
 
阅读(557)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017