Форум сайта python.su
-1
День добрый.
Прошу помощи в работе по 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_())
Офлайн
186
> пытаюсь приделать полосу прокрутки к таблице реализованной через QTableView
Не надо к ней ничего приделывать. QTableView сам прокрутку умеет. А вообще пользуйся дизайнером, тогда и дуратских вопросов не будет.
Офлайн
-1
У меня отображается только вертикальная полоса прокрутки, горизонтальной нет.
Учитывая содержание ячеек без нее не удобно.
Офлайн
186
Прокрутка появляется по мере необходимости.
Офлайн
-1
RodegastВидимо не всегда.. у меня она не появилась. интересует именно горизонтальная прокрутка
Прокрутка появляется по мере необходимости.
Прикреплённый файлы:
Безымянный.jpg (314,0 KБ)
Офлайн
186
self.view.setHorizontalScrollMode(QtGui.QAbstractItemView.ScrollPerPixel) # Если не поможет, то можно принудительно включить прокрутку self.view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
Офлайн
-1
установил вот так. не помогло
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)
Офлайн
-1
Разобрался. область QTableView выхадила за размер QMainWindow. откорректировл и все стало хорошо 
Офлайн