• 4960阅读
  • 5回复

[讨论]一个按钮控制一个widget的显示与隐藏 [复制链接]

上一主题 下一主题
离线langziyang
 

只看楼主 倒序阅读 楼主  发表于: 2012-08-24
一个mainWidget上有一个按钮,按下这个按钮后,另一个widget根据当前状态来显示或者隐藏(关闭)。应该怎么写?我贴上我的代码:只能显示,不能关闭


  1. #include "mainwidget.h"
  2. #include "ui_mainwidget.h"
  3. #include <QDebug>
  4. mainWidget::mainWidget(QWidget *parent) :
  5.     QWidget(parent),
  6.     ui(new Ui::mainWidget)
  7. {
  8.     ui->setupUi(this);
  9.     ui->SearchpushButton->setCheckable(true);
  10.     connect(ui->SearchpushButton,SIGNAL(toggled(bool)),this,SLOT(showOrhidemusicSearWidget(bool)));
  11. }
  12. //显示或者隐藏搜索窗口
  13. void mainWidget::showOrhidemusicSearWidget(bool toggle){
  14.     searchWidget = new Search(this);//实例化搜索窗口
  15.     //先取得主窗口的位置和大小
  16.     int mainWidget_x = this->x();
  17.     int mainWidget_y = this->y();
  18.     int mainWidget_width = this->width();
  19.     int mainWidget_height = this->height();
  20.     //然后设置要显示的窗口的大小与位置,大小与主窗口一样大,位置为在主窗口的右侧与主窗口平行。
  21.     searchWidget->setGeometry(mainWidget_x+mainWidget_width,mainWidget_y,mainWidget_width,mainWidget_height);
  22.     if(toggle){
  23.         searchWidget->show();
  24.     }else{
  25.         searchWidget->close();
  26.     }
  27. }
  28. void mainWidget::showSearchWidget(){
  29.     searchWidget->show();
  30. }
  31. void mainWidget::CloseSearchWidget(){
  32.     searchWidget->close();
  33. }
  34. mainWidget::~mainWidget()
  35. {
  36.     delete ui;
  37. }


离线dbzhang800

只看该作者 1楼 发表于: 2012-08-24


因为这一行太威武了
  1. void mainWidget::showOrhidemusicSearWidget(bool toggle){
  2.     searchWidget = new Search(this);//实例化搜索窗口


离线langziyang

只看该作者 2楼 发表于: 2012-08-24
回 1楼(dbzhang800) 的帖子
怎么解决?不实例化?
离线langziyang

只看该作者 3楼 发表于: 2012-08-24
  1. //显示或者隐藏搜索窗口
  2. void mainWidget::showOrhidemusicSearWidget(bool toggle){
  3.     //先取得主窗口的位置和大小
  4.     int mainWidget_x = this->x();
  5.     int mainWidget_y = this->y();
  6.     int mainWidget_width = this->width();
  7.     int mainWidget_height = this->height();
  8.     if(toggle){
  9.         searchWidget = new Search();//实例化搜索窗口
  10.         //然后设置要显示的窗口的大小与位置,大小与主窗口一样大,位置为在主窗口的右侧与主窗口平行。
  11.         searchWidget->setGeometry(mainWidget_x+mainWidget_width,mainWidget_y,mainWidget_width,mainWidget_height);
  12.         searchWidget->show();
  13.     }else{
  14.         searchWidget->hide();
  15.     }
  16. }


离线jdwx

只看该作者 4楼 发表于: 2012-08-24
引用第1楼dbzhang800于2012-08-24 13:43发表的  :
[表情]
因为这一行太威武了
  1. void mainWidget::showOrhidemusicSearWidget(bool toggle){
  2.     searchWidget = new Search(this);//实例化搜索窗口

.......

要new出多少个算合适呢?
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线stu_xk

只看该作者 5楼 发表于: 2012-08-24
在构造函数中实例化一次就够了,然后show()、hide()
快速回复
限100 字节
 
上一个 下一个