pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

QScrollArea 缺少滾動條

QScrollArea missing Scrollbar(QScrollArea 缺少滾動條)
本文介紹了QScrollArea 缺少滾動條的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我認為這是與以下相同的問題:QScrollArea resizing QWidget

I think it is the same problem as : QScrollArea resizing QWidget

但沒有解決方案.所以讓我揭露這個問題.

but there are not solution. so let me expose the problem.

  • 測試2繼承自QWidget:
    • 組成:
      • QSpinBox 的向量
      • QScrollArea
      • QVBoxLayout
      • 沒有滾動條
      • [FIXED] 滾動條的內部被縮小以適應如此小的空間,無法讀取任何內容(可以在執行期間調整窗口大小,這將導致內部變大且可讀,但不會出現滾動條)

      我認為問題來自單一來源 :: 尺寸提示和布局 (http://qt-project.org/doc/qt-5.1/qtwidgets/qscrollarea.html#details)

      I Think problems come from a single source :: Size Hints and Layouts (http://qt-project.org/doc/qt-5.1/qtwidgets/qscrollarea.html#details)

      第二個問題(縮小的widget)可以通過設置"c->setSizeConstraint(QLayout::SetMinimumSize);"來解決

      The second problem (shrinked widget) can be solved by setting "c->setSizeConstraint(QLayout::SetMinimumSize);"

      我目前正在尋找缺少滾動條的解決方案

      I am currently seeking a solution for the missing scrollbar

      這是顯示我的問題的代碼:

      here is a code showing my problem :

      <c++>
      #include <QWidget>
      #include <QScrollArea>
      #include <QVBoxLayout>
      #include <QSpinBox>
      
      class test2 : public QWidget
      {
              Q_OBJECT
          public:
              test2(QWidget *parent = 0) :QWidget(parent)
              {
                  b = new QScrollArea(this);
                  c = new QVBoxLayout;
      
                  for (int i = 0; i < 10; i++)
                  {
                      a.push_back(new QSpinBox());
                      c->addWidget(a[i]);
                  }
      
                  c->setSizeConstraint(QLayout::SetMinimumSize);
                  b->setLayout(c);
                  b->resize(200, 200);
              }
      
              ~test2()
              {
                  for (int i = 0; i < 10; i++)
                      delete a[i];
              }
      
          protected:
      
              QVector<QSpinBox*> a;
              QScrollArea* b;
              QVBoxLayout* c;
      
      };
      
      
      int main(int argc, char *argv[])
      {
          ///*
          QApplication app(argc, argv);
      
          test2 a;
      
          a.show();
      
          return app.exec();//*/
      }
      

      編輯 :: 在這里找到了解決方案:http://qt-project.org/forums/viewthread/295

      EDIT :: found a Solution here: http://qt-project.org/forums/viewthread/295

      如果你不想在這里閱讀大量無用的代碼,他做了什么 ::他扭曲了小部件內的布局

      if you don't want to read huge amount of useless code here what he has done :: he warped the layout inside a widget

      解決方案::從ScrollBar繼承Object <- Widget <- Layout

      Solution :: inherit the Object from ScrollBar <- Widget <- Layout

      代替小部件 <- ScrollBar <- Layout

      instead of widget <- ScrollBar <- Layout

      但它的解決方法并不是真正的解決方案......我要嘗試我給出的例子.

      but it a work around not really a solution... I going to try on the example I gave.

      它有效.有沒有人有更好的解決方案??

      it works. Does anyone have a better solution ??

      推薦答案

      您不想在滾動區域本身上設置布局.您引用的答案源于對此的誤解.

      You do not want to set the layout on the scroll area itself. The answer you cite stems from misunderstanding this.

      1. 您需要在滾動區域內有一個小部件,然后使用 QScrollArea::setWidget 將該小部件傳遞到該區域.如果滾動區域內只有一個沒有子項的小部件,那么您不需要額外的布局.

      1. You need to have a widget within a scrollarea, and you pass that widget to the area using QScrollArea::setWidget. If all you have inside the scroll area is one widget with no children, then you don't need additional layout.

      您無需手動跟蹤布局擁有的小部件.刪除具有布局的小部件后,它們將自動刪除.

      You do not need to manually keep track of widgets that are owned by a layout. They'll be deleted automatically once the widget that has the layout is deleted.

      QScrollArea 小部件未布置在其封閉小部件中.

      The QScrollArea widget is not laid out within its enclosing widget.

      以下是如何操作的示例:

      Below is a working example of how to do it:

      // https://github.com/KubaO/stackoverflown/tree/master/questions/scroll-18703286
      #include <QScrollArea>
      #include <QVBoxLayout>
      #include <QSpinBox>
      #include <QApplication>
      
      class Window : public QWidget
      {
         QVBoxLayout m_layout{this};
         QScrollArea m_area;
         QWidget m_contents;
         QVBoxLayout m_contentsLayout{&m_contents};
         QSpinBox m_spinBoxes[10];
      public:
         Window(QWidget *parent = {}) : QWidget(parent) {
            m_layout.addWidget(&m_area);
            m_area.setWidget(&m_contents);
            for (auto & spinbox : m_spinBoxes)
               m_contentsLayout.addWidget(&spinbox);
            m_contentsLayout.setSizeConstraint(QLayout::SetMinimumSize);
         }
      };
      
      int main(int argc, char *argv[])
      {
         QApplication app(argc, argv);
         Window w;
         w.show();
         return app.exec();
      }
      

      這篇關于QScrollArea 缺少滾動條的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

      【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How can I read and manipulate CSV file data in C++?(如何在 C++ 中讀取和操作 CSV 文件數據?)
In C++ why can#39;t I write a for() loop like this: for( int i = 1, double i2 = 0; (在 C++ 中,為什么我不能像這樣編寫 for() 循環: for( int i = 1, double i2 = 0;)
How does OpenMP handle nested loops?(OpenMP 如何處理嵌套循環?)
Reusing thread in loop c++(在循環 C++ 中重用線程)
Precise thread sleep needed. Max 1ms error(需要精確的線程睡眠.最大 1ms 誤差)
Is there ever a need for a quot;do {...} while ( )quot; loop?(是否需要“do {...} while ()?環形?)
主站蜘蛛池模板: 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 气动|电动调节阀|球阀|蝶阀-自力式调节阀-上海渠工阀门管道工程有限公司 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 泰国专线_泰国物流专线_广州到泰国物流公司-泰廊曼国际 | 飞利浦LED体育场灯具-吸顶式油站灯-飞利浦LED罩棚灯-佛山嘉耀照明有限公司 | 净气型药品柜-试剂柜-无管道净气型通风柜-苏州毕恩思 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | 充气膜专家-气膜馆-PTFE膜结构-ETFE膜结构-商业街膜结构-奥克金鼎 | 刑事律师_深圳著名刑事辩护律师_王平聚【清华博士|刑法教授】 | 雷蒙磨,雷蒙磨粉机,雷蒙磨机 - 巩义市大峪沟高峰机械厂 | 液氮罐_液氮容器_自增压液氮罐-北京君方科仪科技发展有限公司 | 建筑资质代办_工程施工资质办理_资质代办公司_北京众聚企服 | 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | 无机纤维喷涂棉-喷涂棉施工工程-山东华泉建筑工程有限公司▲ | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 专业深孔加工_东莞深孔钻加工_东莞深孔钻_东莞深孔加工_模具深孔钻加工厂-东莞市超耀实业有限公司 | 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | ★济南领跃标识制作公司★济南标识制作,标牌制作,山东标识制作,济南标牌厂 | 危废处理系统,水泥厂DCS集散控制系统,石灰窑设备自动化控制系统-淄博正展工控设备 | 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | 心得体会网_心得体会格式范文模板 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 3A别墅漆/3A环保漆_广东美涂士建材股份有限公司【官网】 | Honsberg流量计-Greisinger真空表-气压计-上海欧臻机电设备有限公司 | 西点培训学校_法式西点培训班_西点师培训_西点蛋糕培训-广州烘趣西点烘焙培训学院 | 天然鹅卵石滤料厂家-锰砂滤料-石英砂滤料-巩义东枫净水 | 睿婕轻钢别墅_钢结构别墅_厂家设计施工报价 | 网站建设-网站制作-网站设计-网站开发定制公司-网站SEO优化推广-咏熠软件 | 欧景装饰设计工程有限公司-无锡欧景装饰官网 | 精准猎取科技资讯,高效阅读科技新闻_科技猎 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | 电机保护器-电动机综合保护器-上海硕吉电器有限公司 | 比士亚-专业恒温恒湿酒窖,酒柜,雪茄柜的设计定制 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 不锈钢水箱厂家,不锈钢保温水箱-山东桑特供水设备 | 螺杆真空泵_耐腐蚀螺杆真空泵_水环真空泵_真空机组_烟台真空泵-烟台斯凯威真空 |