• 7780阅读
  • 7回复

关于QScrollArea滚动条的问题 [复制链接]

上一主题 下一主题
离线panqingliang
 
只看楼主 倒序阅读 楼主  发表于: 2011-10-27
  我遇到这样的一个问题, 我定义一QScrollArea , 里面是是QWidget, QWidget里面有许多按钮和lineEdit, 其中的QLineEdit是根据条件来显示和隐藏的,  现在的问题是, 我将某个QLineEdit控件隐藏后, QScrollArea的滚动条自己滚动? 我该怎么弄, 不让拿滚动条自己滚动? 下面是代码
  
widget  = new QWidget(this);
widget  -> resize(285, 254);  
timeBtn   = new myQToolButton2(widget);
nameBtn   = new myQToolButton2(widget);
modeBtn   = new myQToolButton2(widget);
typeBtn  = new myQToolButton2(widget);
printBtn   = new myQToolButton2(widget);
codeBtn  = new myQToolButton2(widget);
Btn7  = new myQToolButton2(widget);
Btn8  = new myQToolButton2(widget);

  nameEdit = new QLineEdit(widget);
modeEdit = new myLineEdit(widget);
typeEdit = new myLineEdit(widget);
printEdit = new myLineEdit(widget);
codeEdit = new QLineEdit(widget);

nameEdit -> hide();
modeEdit -> hide();
typeEdit -> hide();
printEdit -> hide();
codeEdit -> hide();


nameBtn  -> setGeometry(20, 32, 260, 30);
modeBtn  -> setGeometry(20, 64, 260, 30);
typeBtn  -> setGeometry(20, 96, 260, 30);
printBtn  -> setGeometry(20, 128, 260, 30);
codeBtn  -> setGeometry(20, 160, 260, 30);
Btn7   -> setGeometry(20, 192, 260, 30);
Btn8   -> setGeometry(20, 224, 260, 30);  nameEdit -> setGeometry(195, 32, 80, 30);
modeEdit -> setGeometry(195, 64, 80, 30);
typeEdit -> setGeometry(195, 96, 80, 30);
printEdit -> setGeometry(195, 128, 80, 30);
codeEdit -> setGeometry(195, 160, 80, 30);

scrollArea = new QScrollArea(this);
scrollArea -> setWidget(widget);


条件判断()
if(×××××)
     {
      codeEdit -> hide();     在这里, 滚动条就自动滚动了???
      codeBtn -> setFocus();
 }  
离线jorneyr

只看该作者 1楼 发表于: 2011-10-27
大小变化了,滚动条是要滚动的。
离线zhy282289
只看该作者 2楼 发表于: 2011-10-27
你的QWidget不变,滚动条是不会滚动啊~。把QWidget设成固定大小看看~setFixSize();

PS:你怎么不是子类一个QWidget然后你的button放里面,
为什么我脸这么胖~
离线panqingliang
只看该作者 3楼 发表于: 2011-10-27
回 2楼(zhy282289) 的帖子
大小肯定没有变, 因为,我的lineEdit都是在button上位置的
“PS:你怎么不是子类一个QWidget然后你的button放里面,”
   你的这句话是什么意思??
离线zhy282289
只看该作者 4楼 发表于: 2011-10-27
回 3楼(panqingliang) 的帖子
你那种情况我没遇到过~等下我实验下
对于你问题
就是子类QWidget:然后你上面的控件放里面定义啊

class myForm:public QWidget
{
     Q_OBJECT
public:
     .......................
     ...................
     .............

private:
   QPushButton *btn;
   QPushButton *btn2;
        ...................
     .............
}

类似这样的..
然后:
QScrollArea *scrollArea = new QScrollArea;
myForm *form = new myForm;
scrollArea ->setWidget(form);
一般是这样吧.
当然你在你的QScrollArea里加也行~


为什么我脸这么胖~
离线zhy282289
只看该作者 5楼 发表于: 2011-10-27
我试了下没有动啊~
为什么我脸这么胖~
离线panqingliang
只看该作者 6楼 发表于: 2011-10-27
你那个是要自己继承QWidget,我这直接myBtn = new QLineEdit(widget), 不也一样吗!  但是, 我的确实是动了, 不过, 我的lineEdit显示出来的时候, 我要求上面有焦点了, 我用是setFocus()了, 接着隐藏的话, 有吧焦点转到, 他下面的按钮上了
离线zhy282289
只看该作者 7楼 发表于: 2011-10-27
那应该是这个原因了~
为什么我脸这么胖~
快速回复
限100 字节
 
上一个 下一个