zoukankan      html  css  js  c++  java
  • Qt中QScrollArea类的简单使用心得

           平台:windows 64位

           Qt版本:5.5.1 MinGW 32bit

    根据自己目前的需求简单说下怎么在QScrollArea滚动窗口中实现多个控件的滚动显示,先看看最终效果:

    先说一下在QScrollArea滚动窗口中要添加控件要使用QScrollArea::setWidget(QWidget * widget)这个函数,当添加的控件显示范围大于scrollArea则会出现滚动条,但是从名字可以看出这个函数是用于设置一个QWidget,而不能用于不断的添加QWidget,所以这里面并不能像大家想的那样来直接实现上面的效果,而是需要创建一个自己的QWidget,再在其中来添加自己需要的控件。

            下面给出代码看看,由于我的滚动窗口是已经用设计器添加到对话框上的,所以我直接用ui->scrollArea来调用,buttonListWidget是我重新实现的QWidget子类,等会在下面可以看到实现代码:

      1 buttonListWidget *buttonList = new buttonListWidget(this);
      2 buttonList->initWidget(strList);
      3 ui->scrollArea->setWidget(buttonList);

    buttonListWidget类,其实内容不多,但是主要是掌握到方法:

    buttonListWidget.h

      1 class buttonListWidget : public QWidget
      2 {
      3     Q_OBJECT
      4 public:
      5     explicit buttonListWidget(QWidget *parent = 0);
      6     void initWidget(QStringList& nameList);
      7 
      8 signals:
      9 
     10 public slots:
     11 };

    buttonListWidget.cpp

      1 buttonListWidget::buttonListWidget(QWidget *parent) : QWidget(parent)
      2 {
      3 
      4 }
      5 
      6 void buttonListWidget::initWidget(QStringList &nameList)
      7 {
      8     QHBoxLayout *layout = new QHBoxLayout(this);
      9     foreach (QString str, nameList)
     10     {
     11         QPushButton *button = new QPushButton(str, this);
     12         button->setMinimumSize(button->size());
     13         layout->addWidget(button);
     14     }
     15     this->setLayout(layout);
     16 }
  • 相关阅读:
    element ui 表单清空
    element ui 覆盖样式 方法
    element ui 修改表单值 提交无效
    element ui 抽屉里的表单输入框无法修改值
    element ui 抽屉首次显示 闪烁
    css 左侧高度 跟随右侧内容高度 自适应
    PICNUF框架
    elementui 抽屉组件标题 出现黑色边框
    vue 子组件跨多层调用父组件中方法
    vue 编辑table 数据 未点击提交,table里的数据就发生了改变(深拷贝处理)
  • 原文地址:https://www.cnblogs.com/yuan-long/p/6028772.html
Copyright © 2011-2022 走看看