我有一个窗口,其中包含QTableView哪些列调整为内容并固定宽度.所述QTableView嵌套内的QWidget,反过来嵌套内的QScrollArea是,在又一个嵌套内的选项卡式 QMdiArea这是centralWidget的QMainWindow.
当QScrollArea所示,QTableView有额外的空间,我想除去最后一列的权利:

我希望QTableView拟合列的确切宽度(即最右边的列后没有额外的空格).
我尝试使用tableView.setFixedWidth(desired_width)但是它唯一可行的方法是迭代所有列并获得它们的宽度并将它们加在一起并添加verticalHeader宽度和滚动条宽度并将其作为传递desired_width.
它确实以这种方式工作,但对于这样一个明显的要求似乎非常复杂:我认为许多程序开发人员希望他们的表的宽度适合列的宽度,这就是让我想知道可能有一种方法在没有额外计算的情况下自动完成并且我不知道.
所以我的问题是:有没有更简单的方法来实现相同的结果?
这是我的代码供参考:
t_main负责创建的模块的代码QMainWindow:
import sys
import t_wdw
from PySide import QtGui
class Main_Window(QtGui.QMainWindow):
def __init__(self):
super(Main_Window,self).__init__()
self.initUI()
def initUI(self):
self.statusBar()
# Defines QActions for menu
self.new_window=QtGui.QAction("&Window alpha",self)
self.new_window.triggered.connect(self.open_window)
# Creates the menu
self.menu_bar=self.menuBar()
self.menu1=self.menu_bar.addMenu('&Menu 1')
self.menu1.addAction(self.new_window)
# Creates a QMdiArea to …Run Code Online (Sandbox Code Playgroud) 我是模型视图的新手,我在检查文档的同时也一直关注本教程,我偶然发现了这个小细节:可以在这里下载的教程代码在QAbstractItemModel类(这里是QAbstractListModel)中setData方法,代码是:
def setData(self, index, value, role = QtCore.Qt.EditRole):
if role == QtCore.Qt.EditRole:
row = index.row()
color = QtGui.QColor(value)
if color.isValid():
self.__colors[row] = color
self.dataChanged.emit(index, index)
return True
return False
Run Code Online (Sandbox Code Playgroud)
根据教程中的解释和我从文档中理解的内容,如果函数返回True,则视图会更新,如果返回false,则没有任何反应,但是当我将代码更改为:
def setData(self, index, value, role = QtCore.Qt.EditRole):
if role == QtCore.Qt.EditRole:
row = index.row()
color = QtGui.QColor(value)
if color.isValid():
self.__colors[row] = color
self.dataChanged.emit(index, index)
return False # This is what I changed in the code
return False
Run Code Online (Sandbox Code Playgroud)
我意识到如果color.isValid()即使函数返回False,视图仍会更新.我是否误解了setData方法中的返回角色或者它是一个错误?
作为参考,我使用的是PySide 1.2.1,而不是PyQt4.
我有一个包含以下代码的html文件:
<select id="gouv" name="gouv">
...some options here...
</select>
Run Code Online (Sandbox Code Playgroud)
和以下jQuery代码:
$('#gouv option[value="myvalue"]').attr("checked","checked");
Run Code Online (Sandbox Code Playgroud)
这一点,你当然知道设置选项值"myvalue"来检查哪个完美.
现在的问题是,我不知道,我想作为托运因为这个值是存储在一个全局变量中的一些函数的结果来设置选项的值.为简化起见,经过长时间的调试,我将问题减少到以下几点:
var ident="myvalue";
$('#gouv option[value=ident]').attr("checked","checked");
Run Code Online (Sandbox Code Playgroud)
这段代码不起作用!
我想知道为什么它不起作用,我们不能将值作为变量传递?这有什么解决方法吗?