找回密码
 立即注册
收起左侧

QT界面交互

3
回复
8704
查看
[复制链接]
累计签到:11 天
连续签到:1 天
来源: 2016-6-22 17:56:39 显示全部楼层 |阅读模式
1Qter豆
想实现这样一种功能,界面分两部分,
左边是一个treewidget,点击不同的treewidgetitem在界面右边显示不同的界面



这是实现交互的主要代码,使用了QSpliter类,
queryDevicePage和 sendCmdPage是两个继承自QWidgets的界面类,就是图中的两个界面,
  1. deviceOpt::deviceOpt(QMainWindow *parent) : QMainWindow(parent)
  2. {
  3.     _spliter = new QSplitter(this);
  4.     _devTree = createTreeWidget();
  5.     _spliter->addWidget(_devTree);
  6.     _spliter->setStretchFactor(1,1);
  7.     this->setCentralWidget(_spliter);
  8.     connect(_devTree,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(slotItemClicked(QTreeWidgetItem*,int)));

  9. }
复制代码
  1. void deviceOpt::slotItemClicked(QTreeWidgetItem *itm, int col)
  2. {
  3.     if(itm->text(col) == tr("查看设备"))
  4.     {
  5.         _queryPage = new queryDevicePage;
  6.         _spliter->addWidget(_queryPage);
  7.         if(_cmdPage != NULL)
  8.             _cmdPage->deleteLater();
  9.     }
  10.     if(itm->text(col) == tr("删除设备"))
  11.     {
  12.         qDebug() <<tr("删除设备")<< "clicked";
  13.     }
  14.     if(itm->text(col) == tr("发送指令"))
  15.     {
  16.          _cmdPage = new sendCmdPage;
  17.         _spliter->addWidget(_cmdPage);
  18.         if(_queryPage != NULL)
  19.             _queryPage->deleteLater();
  20.     }
  21. }
复制代码
有没有更好的实现方法呢?

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2016-6-23 19:34:34 显示全部楼层
我比较倾向于右边用QStackedWidget
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2016-6-25 14:20:42 显示全部楼层
右边用QTabWidget做容器,按需加载需要的实际界面就可以啦。
回复

使用道具 举报

累计签到:11 天
连续签到:1 天
2016-6-28 15:43:34 显示全部楼层
rcyboom 发表于 2016-6-25 14:20
右边用QTabWidget做容器,按需加载需要的实际界面就可以啦。

界面切换的时候需要把上一个界面清除?然后再显示本次界面吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了