• 4590阅读
  • 6回复

窗体里如何实现多个按钮控制控制多个groupbox在同一个位置上显示不同的内容 [复制链接]

上一主题 下一主题
离线zhing21
 

只看楼主 倒序阅读 楼主  发表于: 2013-07-17

小弟新人  刚学QT  很多地方不明白,如图:4个按钮,点击不同按钮,右边的groupbox里显示不同的内容(可以包括窗体,控件,界面布局等。),而且点击当前按钮显示的界面必须覆盖前面点击按钮显示的界面!!!急急急!!求大神帮帮忙啊 最好是有源码案例的代码啊
离线xuang

只看该作者 1楼 发表于: 2013-07-17
回 楼主(zhing21) 的帖子
我觉得你说的这个功能可以直接用QTabWidget代替实现,这样就完全是画窗体的问题了,代码部分不需要自己写,Qt会自动生成。
如果非要按照你说的做的话,可以画多个QGroupBox,每个分别对应不同的按钮,然后在对应按钮的响应槽里通过对应的QGroupBox的setVisible方法设置其显示,其余隐藏。
离线gwyanping

只看该作者 2楼 发表于: 2013-07-17
设置显隐。或者用QStackWidget来实现,当然也可以选择楼上的tabWidget
离线zhing21

只看该作者 3楼 发表于: 2013-07-17
回 1楼(xuang) 的帖子
谢谢  目前用的StackWidget   但是不知道设置槽的时候如何把不同的按钮对应到不同的page页
离线zhing21

只看该作者 4楼 发表于: 2013-07-17
回 2楼(gwyanping) 的帖子
谢谢  目前用的StackWidget   但是不知道设置槽的时候如何把不同的按钮对应到不同的page页   还望指教
离线gwyanping

只看该作者 5楼 发表于: 2013-07-18
Qt有个一个例子,你可以看一下,在示例里面搜索Config Dialog Example。
离线realfan

只看该作者 6楼 发表于: 2013-07-24
回 3楼(zhing21) 的帖子
给你段代码思路,参考一下
XXXX::XXXX()
{  
    m_pStatckedWidget = new QStackedWidget(this);
    m_pBtnEmployee = new QPushButton(........);
    m_pBtnCustomer = new ......

    QWidget * pWd = new WidgetEmployee(); //自己创建的类
    m_pStatckedWidget->addWidget(pWd);
    m_mapBtnWidget[m_pBtnEmployee] = pWd;
    
    pWd = new WidgetCustomer();
    m_pStatckedWidget->addWidget(pWd);
    m_mapBtnWidget[m_pBtnCustomer] = pWd;
    ....
    
    connect(m_pBtnEmployee, SIGNAL(clicked()),  this, SLOT(slotChangeWidget()));
    connect(m_pBtnCustomer, SIGNAL(clicked()),  this, SLOT(slotChangeWidget()));
........
}


void XXXX::slotChangeWidget()
{
    const QObject * pSender = sender();
    if(0 == pSender)
    {
        return;
    }
    m_pStatckedWidget->setCurrentWidget(m_mapBtnWidget[pSender]);
}
快速回复
限100 字节
 
上一个 下一个