乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      c – 如何使Qt子小部件高度相等?

       印度阿三17 2019-09-02

      我在一個QWidget中有一些QDockWidgets(不浮動,只能關(guān)閉).
      我在每個QDockWidget中都有一些小部件 – 它們的高度應(yīng)該相等.
      可以通過上下文菜單隱藏這些內(nèi)部小部件.

      我的內(nèi)部小部件應(yīng)該具有相同的高度.我是這樣做的:

      void MyDocksPanel::redistributeSpace()
      {
          QBoxLayout * lay = (QBoxLayout *)layout();
          for (int i = 0; i < lay->count(); i  )
          {
              QWidget * dock = lay->itemAt(i)->widget();
              if (dock == NULL)
                  continue;
      
              int size = 0;
              foreach(QWidget * subWidget, dock->findChildren<QWidget*>())
                  size  = subWidget->isVisible() ? 1 : 0;
      
              if (dock->isVisible() && (size == 0))
                  dock->hide();
              lay->setStretch(i, size);
          }
      }
      

      一切正常,直到我為每個QDockWidget添加一些const元素:一些水平滾動條和一些標簽……現(xiàn)在我的內(nèi)部小部件有不同的大小.但是我必須將他們的高度設(shè)置得非常平等.

      QLayout在小部件層次結(jié)構(gòu)的一個級別上布局小部件大小.如何制作高度相等的子小部件?

      3個子小部件與2個子部件

      我設(shè)置第3和第2段的第一個策略:

      但是,當我添加滾動條時:

      我的5個小部件的高度等于37,37,37,28,28 ……這就是問題所在

      解決方法:

      你有關(guān)于拉伸因子的正確軌跡,但請考慮像素值而不是小比例.嘗試將每個??看翱谛〔考纳煺挂蜃釉O(shè)置為:

      dockWidgetStretch = numChildWidgets * childWidgetMinimumHeight   scrollBarHeight;
      

      其中childWidgetMinimumHeight和scrollBarHeight都以像素表示,并且都是常量.

      編輯:這是一個工作的例子.您可能需要進行一些實驗才能使其與您的程序一起使用,但這應(yīng)該是一個好的開始.

      header.h

      #include <QtGui>
      
      class WidgetWith3Children : public QWidget
      {
      public:
          WidgetWith3Children()
          {
              QTextEdit *edit1 = new QTextEdit;
              QTextEdit *edit2 = new QTextEdit;
              QTextEdit *edit3 = new QTextEdit;
              QScrollBar *scrollBar = new QScrollBar(Qt::Horizontal);
              QVBoxLayout *layout = new QVBoxLayout;
              layout->addWidget(edit1);
              layout->addWidget(edit2);
              layout->addWidget(edit3);
              layout->addWidget(scrollBar);
              setLayout(layout);
          }
      };
      
      class WidgetWith2Children : public QWidget
      {
      public:
          WidgetWith2Children()
          {
              QTextEdit *edit1 = new QTextEdit;
              QTextEdit *edit2 = new QTextEdit;
              QScrollBar *scrollBar = new QScrollBar(Qt::Horizontal);
              QVBoxLayout *layout = new QVBoxLayout;
              layout->addWidget(edit1);
              layout->addWidget(edit2);
              layout->addWidget(scrollBar);
              setLayout(layout);
          }
      };
      
      class OuterWidget : public QWidget
      {
      public:
          OuterWidget()
          {
              QDockWidget *dockWidget1 = new QDockWidget;
              QDockWidget *dockWidget2 = new QDockWidget;
              dockWidget1->setWidget(new WidgetWith3Children);
              dockWidget2->setWidget(new WidgetWith2Children);
              QVBoxLayout *layout = new QVBoxLayout;
      
              // 71 is the height of the minimum size hint for QTextEdit
              // 30 is the height of a horizontal scrollbar (on my system)
              layout->addWidget(dockWidget1, 71 * 3   30);
              layout->addWidget(dockWidget2, 71 * 2   30);
      
              layout->setMargin(0);
              setLayout(layout);
          }
      };
      

      main.cpp中

      #include <QtGui/QApplication>
      #include "header.h"
      
      int main(int argc, char *argv[])
      {
          QApplication a(argc, argv);
          OuterWidget w;
          w.show();
      
          return a.exec();
      }
      
      來源:https://www./content-4-434351.html

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多