2017-10-14 38 views
2

有許多QTextEdit彼此相鄰(我有一個表格子集的HTML)他們溢出窗口空間時,我不希望他們得到一個滾動條。pyQt:Scrolling QScrollArea不是每個QTextEdit個別

我希望窗口具有全局滾動條。 最佳做法是什麼?

這裏的代碼,例如:

import sys 
from PyQt5.QtWidgets import * 
from PyQt5.QtGui import * 
from PyQt5.QtCore import QCoreApplication, QRect, Qt 

class MainWindow(QScrollArea): 
    def __init__(self): 
     super().__init__() 

     layout = QHBoxLayout(self) 

     text = '' 
     for i in range(0,1000): 
      text = '{0} {1}\n'.format(text, i) 

     for i in range(0,10): 
      textEdit = QTextEdit() 
      layout.addWidget(textEdit) 
      textEdit.setText(text) 

     self.resize(600,400) 

     self.show() 

if __name__ == '__main__': 

    app = QApplication(sys.argv) 
    ex = MainWindow() 
    sys.exit(app.exec_()) 

enter image description here

我可以添加一個容器上面,它擺脫了滾動條,但我不能滾動在所有

什麼
import sys 
from PyQt5.QtWidgets import * 
from PyQt5.QtGui import * 
from PyQt5.QtCore import QCoreApplication, QRect, Qt 

class MainWindow(QScrollArea): 
    def __init__(self): 
     super().__init__() 

     container = QFrame(self) 
     container.resize(600,15000) 

     layout = QHBoxLayout(container) 

     text = '' 
     for i in range(0,1000): 
      text = '{0} {1}\n'.format(text, i) 

     for i in range(0,10): 
      textEdit = QTextEdit() 
      layout.addWidget(textEdit) 
      textEdit.setText(text) 

     self.resize(600,400) 

     self.show() 

if __name__ == '__main__': 

    app = QApplication(sys.argv) 
    ex = MainWindow() 
    sys.exit(app.exec_()) 
+0

如果文本編輯內容不同,它們不會全部滾動相同的距離。那麼一個* global *滾動條如何工作?它只是應該滾動具有鍵盤焦點的文本編輯?如果每個文本編輯只有用鼠標在它上面滾動時才顯示滾動條,那也許會更好。 – ekhumoro

+0

我使用的QtextEdit不作爲文本編輯,但作爲一個很好的工具來創建自定義標籤trhough HTML子集。所以那些QTextEdit就像圖像一樣,我不需要在它們中滾動,我想要完全滾動標籤組/ QTextEdit – user3755529

回答

1

它看起來像所有你需要做的是文本編輯set the vertical scroll-bar policy然後add the container widget to the scroll-area

class MainWindow(QScrollArea): 
    def __init__(self): 
     super().__init__() 

     container = QFrame(self) 
     container.resize(600,15000) 

     layout = QHBoxLayout(container) 

     text = '' 
     for i in range(0,1000): 
      text = '{0} {1}\n'.format(text, i) 

     for i in range(0,10): 
      textEdit = QTextEdit() 
      layout.addWidget(textEdit) 
      textEdit.setText(text) 
      textEdit.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) 

     self.setWidget(container) 

     self.resize(625,400) 

     self.show() 
+0

!謝謝...我該怎麼做,以便容器大小適應內容? – user3755529