Найти - Пользователи
Полная версия: pyqt QScrollArea к QTableView
Начало » Python для новичков » pyqt QScrollArea к QTableView
1
Inok
День добрый.
Прошу помощи в работе по pyqt QtGui.QScrollArea
пытаюсь приделать полосу прокрутки к таблице реализованной через QTableView
пока получилось только так :
#!/usr/bin/env python
import sys
from PyQt4 import QtGui,QtSql,QtCore
from database2 import Baza
class Prog(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.setWindowTitle('MyProgramm') # передаем имя окна
        self.resize(1200,700) # Даем размер окна
        self.view=QtGui.QTableView(self) #заполняем тблцей
        self.view.setGeometry(0, 20, 1200, 680)
        exit = QtGui.QAction(QtGui.QIcon('exit.png'), 'Exit', self)
        #hot keys
        exit.setShortcut('Ctrl+Q')
        #signal onclick
        self.connect(exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))    
        t_Name_xslt = QtGui.QAction('t_Name_xslt', self)
        t_Platezh = QtGui.QAction('t_Platezh', self)
        t_Name = QtGui.QAction('t_Name', self)
        self.connect(t_Name_xslt, QtCore.SIGNAL('triggered()'), self.des1)
        self.connect(t_Platezh, QtCore.SIGNAL('triggered()'), self.des2)
        self.connect(t_Name, QtCore.SIGNAL('triggered()'), self.des3)
        #create menu and actions
        menubar = self.menuBar()
        file = menubar.addMenu('&File')
        news = menubar.addMenu('&Forms')
        file.addAction(exit)
        news.addAction(t_Name_xslt)
        news.addAction(t_Platezh)
        news.addAction(t_Name)
    def des1(self):
        model=QtSql.QSqlQueryModel()
        model.setQuery("SELECT * FROM t_Name_xslt")
        self.view.setModel(model)
        self.view.setMinimumSize(1000, 700)
        self.view.resizeColumnsToContents() #определяем ширину колонки автоматически по самому длинному
        vh = self.view.verticalHeader()
        vh.setVisible(True)
        hh = self.view.horizontalHeader()
        hh.setStretchLastSection(True)
    def des2(self):
        model=QtSql.QSqlQueryModel()
        model.setQuery("SELECT * FROM t_Platezh")
        self.view.setModel(model)
        self.view.setMinimumSize(1000, 700)
        self.view.resizeColumnsToContents() #определяем ширину колонки автоматически по самому длинному
        vh = self.view.verticalHeader()
        vh.setVisible(True)
        hh = self.view.horizontalHeader()
        hh.setStretchLastSection(True)
    def des3(self):
        model=QtSql.QSqlQueryModel()
        model.setQuery("SELECT * FROM t_Name")
        self.view.setModel(model)
        self.view.setMinimumSize(1000, 700)
        self.view.resizeColumnsToContents() #определяем ширину колонки автоматически по самому длинному
        vh = self.view.verticalHeader()
        vh.setVisible(True)
        hh = self.view.horizontalHeader()
        hh.setStretchLastSection(True)
class Window(QtGui.QScrollArea):
    def __init__(self):
        super(Window, self).__init__()
        self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        self.setGeometry(100, 100, 1200, 700)
        self.ex = Prog(self)
        self.setWidget(self.ex)
app = QtGui.QApplication(sys.argv)
bd1=Baza()
bd1.connection_bd()
my_class=Window()
my_class.show()
sys.exit(app.exec_())
Rodegast
> пытаюсь приделать полосу прокрутки к таблице реализованной через QTableView

Не надо к ней ничего приделывать. QTableView сам прокрутку умеет. А вообще пользуйся дизайнером, тогда и дуратских вопросов не будет.
Inok
У меня отображается только вертикальная полоса прокрутки, горизонтальной нет.
Учитывая содержание ячеек без нее не удобно.
Rodegast
Прокрутка появляется по мере необходимости.
Inok
Rodegast
Прокрутка появляется по мере необходимости.
Видимо не всегда.. у меня она не появилась. интересует именно горизонтальная прокрутка
Rodegast
self.view.setHorizontalScrollMode(QtGui.QAbstractItemView.ScrollPerPixel)
# Если не поможет, то можно принудительно включить прокрутку
self.view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
Inok
установил вот так. не помогло
    def des1(self):
        model=QtSql.QSqlQueryModel()
        model.setQuery("SELECT * FROM t_Name_xslt")
        self.view.setModel(model)
        self.view.setMinimumSize(1000, 700)
        self.view.resizeColumnsToContents() #определяем ширину колонки автоматически по самому длинному
        #vh = self.view.verticalHeader()
        #vh.setVisible(True)
        #hh = self.view.horizontalHeader()
        #hh.setStretchLastSection(True)
        self.view.setHorizontalScrollMode(QtGui.QAbstractItemView.ScrollPerPixel)
        # Если не поможет, то можно принудительно включить прокрутку
        self.view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
Inok
Разобрался. область QTableView выхадила за размер QMainWindow. откорректировл и все стало хорошо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB