Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 30, 2015 21:54:32

Inok
Зарегистрирован: 2013-09-11
Сообщения: 41
Репутация: +  -1  -
Профиль   Отправить e-mail  

pyqt QScrollArea к QTableView

День добрый.
Прошу помощи в работе по 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_())

Офлайн

#2 Окт. 30, 2015 22:45:49

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

pyqt QScrollArea к QTableView

> пытаюсь приделать полосу прокрутки к таблице реализованной через QTableView

Не надо к ней ничего приделывать. QTableView сам прокрутку умеет. А вообще пользуйся дизайнером, тогда и дуратских вопросов не будет.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Окт. 31, 2015 08:53:43

Inok
Зарегистрирован: 2013-09-11
Сообщения: 41
Репутация: +  -1  -
Профиль   Отправить e-mail  

pyqt QScrollArea к QTableView

У меня отображается только вертикальная полоса прокрутки, горизонтальной нет.
Учитывая содержание ячеек без нее не удобно.

Офлайн

#4 Окт. 31, 2015 13:53:15

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

pyqt QScrollArea к QTableView

Прокрутка появляется по мере необходимости.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Окт. 31, 2015 14:12:36

Inok
Зарегистрирован: 2013-09-11
Сообщения: 41
Репутация: +  -1  -
Профиль   Отправить e-mail  

pyqt QScrollArea к QTableView

Rodegast
Прокрутка появляется по мере необходимости.
Видимо не всегда.. у меня она не появилась. интересует именно горизонтальная прокрутка

Прикреплённый файлы:
attachment Безымянный.jpg (314,0 KБ)

Офлайн

#6 Окт. 31, 2015 14:17:58

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

pyqt QScrollArea к QTableView

self.view.setHorizontalScrollMode(QtGui.QAbstractItemView.ScrollPerPixel)
# Если не поможет, то можно принудительно включить прокрутку
self.view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Окт. 31, 2015 15:03:45

Inok
Зарегистрирован: 2013-09-11
Сообщения: 41
Репутация: +  -1  -
Профиль   Отправить e-mail  

pyqt QScrollArea к QTableView

установил вот так. не помогло

    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)

Офлайн

#8 Ноя. 1, 2015 16:04:23

Inok
Зарегистрирован: 2013-09-11
Сообщения: 41
Репутация: +  -1  -
Профиль   Отправить e-mail  

pyqt QScrollArea к QTableView

Разобрался. область QTableView выхадила за размер QMainWindow. откорректировл и все стало хорошо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version