我希望在QWidget窗口中有一个表格,并在每次用户在lineEdit字段中输入值时更新表格。我如何以编程方式执行此操作?
状态:我在您的代码中收到以下错误:
TypeError:QAbstractTableModel.beginInsertRows(QModelIndex,int,int):参数2具有意外类型“str”
from PyQt4 import QtGui , QtCore
import sys
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class ABCTableModel(QtCore.QAbstractTableModel):
def __init__(self,data,parent=None):
QtCore.QAbstractTableModel.__init__(self,parent)
self.__data=data # Initial Data
def rowCount( self, parent ):
return len(self.__data)
def columnCount( self , parent ):
return len(self.__data)
def data ( self , index , role ):
if role == QtCore.Qt.DisplayRole:
row = index.row()
column = index.column()
value = self.__data[row][column]
return QtCore.QString(str(value))
def setData(self, index, value):
self.__data[index.row()][index.column()] = …Run Code Online (Sandbox Code Playgroud) 我已经用 MySQL 数据库中的表的列填充了 JavaFX TableView。
在我的 TableView 中,我创建的第一列是“Number”,它没有链接到 MySql 数据库表中的任何列。在这一列中,我想查看每行的行数。
例如,如果 TableView 有 5 行,则“数字”列必须分别为每行显示数字 1、2、3、4、5。如果删除第 4 行,则剩余行的行号应为 1,2,3,4。
我想TableView在 JavaFX 中创建一个简单的数据,其中我的数据是一个类似矩阵的二维double[][]数组,但我不知道如何实现这一点,有什么建议吗?
我有一个表格视图,我试图在其中实现滑动删除操作。
我正在使用 swift 4 和 Xcode 9。
到目前为止,我有下一个代码,它允许我在滑动时显示删除标签:
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
switch editingStyle {
case .delete:
print("deleting row")
default:
return
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,现在我想将背景红色更改为另一种颜色,如果可能的话我想显示一个图标而不是标签。
我正在尝试在 Swift 4 中看到的这段代码,但在创建按钮时它会抱怨:
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let deleteButton = UITableViewRowAction(style: .default, title: "Delete") { (action, indexPath) in
self.tableView.dataSource?.tableView!(self.tableView, commit: .delete, forRowAt: indexPath)
return
}
deleteButton.backgroundColor = UIColor.black
return [deleteButton]
}
Run Code Online (Sandbox Code Playgroud)
它给出了此错误 -> 对成员 'tableView(_:numberOfRowsInSection:)' 的引用不明确
我不知道我是否正在尝试编辑的好方法,或者它是否在 swift 4 上根本不可编辑。
任何帮助表示赞赏,
谢谢!
我有动态填充原型单元的数据。它只会根据需要创建尽可能多的数据单元格。我遇到的问题是单击 UIButton 时将数据传递到详细视图。
每个动态单元格内都有一个 UIButton,按下该按钮时将传递选定到详细视图中的单元格内的任何数据。
将数据加载到表视图中没有问题,我只是无法正确传递值。
这是我的行单元格:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "part", for: indexPath) as! partsTableCell
let part = partList[0]
cell.a.text = String(part.a)
cell.b.text = part.b
cell.c.text = part.c
cell.d.text = part.d
cell.e.text = part.e
cell.f.text = part.f
self.tableView.rowHeight = 250
cell.layer.borderColor = UIColor.darkGray.cgColor
cell.layer.borderWidth = 1
cell.layer.cornerRadius = 5
cell.clipsToBounds = true
//tried using tags, but no luck
//cell.myButton.tag = indexPath.row
return cell
}
Run Code Online (Sandbox Code Playgroud)
为了彻底起见,我为表格单元格设置了一个自定义类。
class partsTableCell: UITableViewCell …Run Code Online (Sandbox Code Playgroud) 我有一个 JavaFX TableView,我希望表行为TableView在父节点大小调整得太小而无法显示数据时截断图像,而不是使其变得可滚动。为了澄清,我只是希望滚动条被禁用或不可见,这样它们就不会显示。
下面是我在 SceneBuilder 中的节点层次结构,以防有帮助。
我在下面尝试过的事情
我读了这篇文章,但答案只是使单元格调整大小以适应宽度,而不是禁用ScrollBar. 我在这里ScrollBar阅读了有关s的文档,但找不到 a或属性。我也阅读了这里的文档,但没有运气。visibleenabledTableView
我在这里搜索了JavaFX CSS指南,发现下面有两个策略可以引用滚动窗格。
-fx-hbar-policy:
-fx-vbar-policy:
Run Code Online (Sandbox Code Playgroud)
但将 包裹TableView在 a 中ScrollPane并没有按预期工作。它不允许我“适应父母”。我想引用这些属性,但TableView如果可能的话,可以直接引用。非常感谢任何建议。
使用组合和 UIKit,当 viewModel 中包含的数组发生更改时,我尝试更新我的表视图。我的表视图的数据源是单独的,因为我想重用该文件(不同的对象都有一个名称 var,因此表视图将显示名称列表)。
视图模型:
class ViewModel {
@Published var items = [ItemViewModel]()
let service = NetworkService()
init() {
fetchItems()
}
func fetchItems() {
service.fetchItems { items in {
self.items = items.map { ItemViewModel($0) }
}
}
Run Code Online (Sandbox Code Playgroud)
数据源:
class GenericDataSource: UITableViewDataSource {
var list = [String]()
func setList(_ list: [String]) {
self.list = list
}
// then the usual tableView datasource boilerplate
}
Run Code Online (Sandbox Code Playgroud)
视图控制器:
class ViewController: UIViewController {
let viewModel = ViewModel()
let tableDataSouce = GenericDataSource()
var subscriptions = …Run Code Online (Sandbox Code Playgroud) 考虑 JavaFX 应用程序内的表格视图。表视图包含有关人员的数据:
id firstname lastname
1 John Doe
Run Code Online (Sandbox Code Playgroud)
表视图的每一行都可以用来实例化一个 Person 对象:
new Person(Integer id, String firstname, String lastname)。
这是我想做的:
我想选择表格视图中的一个人,然后用鼠标将其拖动到文本区域中。在文本区域内我想打印字符串:
1 John Doe。
我知道我必须实现三个函数才能实现此目的:onDragDetected(), onDragOver() and onDragDropped()。
我想从以下开始:
public void onDragDetected(DragEvent dragevent) {
Person person = tvPersonData.getSelectionModel().getSelectedItem();
}
Run Code Online (Sandbox Code Playgroud)
这有效。但我必须以某种方式让我的 Person 进入 DragBoard 对象 ( dragevent.getDragboard())。我想我是这样的。然后也许我的其他功能可以使用我的拖板内的任何内容。
有人可以帮我从这里出去吗?
我在 Javafx 中有一个 Tableview,其中我尝试在用户按下按钮时动态添加一行。问题是,执行此操作时,表中以前的数据会重复。我必须说,如果我打印表中项目的大小,它会返回正确的大小,没有重复项,并且我无法选择重复的项目,也无法滚动查看它们。\n这是我的代码:\ ndetail.fxml
\n<TableView fx:id="tblPersonalExterno" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS">\n <columns>\n <TableColumn prefWidth="781.0000244379044">\n <graphic>\n <Label text="Externo" />\n </graphic>\n <columns>\n <TableColumn fx:id="tblcNombreExterno" prefWidth="270" text="Nombre"/>\n <TableColumn fx:id="tblcEmpresaExterno" prefWidth="270" text="Empresa" />\n <TableColumn fx:id="tblcInfPRLExterno" minWidth="0.0" prefWidth="59.0">\n <graphic>\n <Label text="Inf. PRL">\n <tooltip>\n <Tooltip text="Informado PRL" />\n </tooltip>\n </Label>\n </graphic>\n </TableColumn>\n <TableColumn fx:id="tblcAprobadoPRLExterno" minWidth="0.0" prefWidth="73.00003051757812">\n <graphic>\n <Label text="Apr. Cl. PRL">\n <tooltip>\n <Tooltip text="Aprobado cliente PRL" />\n </tooltip>\n </Label>\n </graphic>\n </TableColumn>\n <TableColumn fx:id="tblcFechaAprPRLExterno" prefWidth="100.0">\n <graphic>\n <Label text="Fecha apr.">\n <tooltip>\n <Tooltip text="Fecha de aprobaci\xc3\xb3n" />\n </tooltip>\n </Label>\n …Run Code Online (Sandbox Code Playgroud) 所以我有一个UITableView,我用table中的数据填充tableview .plist.这对我来说一直很好,直到今天,当我试图做同样的事情,我无法得到numberOfRowsInSection,方法工作.这是我的代码:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if...
else if (segmentOptions == exchange){
NSArray *array = [NSArray arrayWithArray:[exchangeDictionary objectForKey:[listOfExchanges objectAtIndex:section]]];
return [array count];
}
//Else
return contentArray.count;
}
Run Code Online (Sandbox Code Playgroud)
因此,在该代码中,每次运行代码时,代码都会崩溃.但是,我使用基本相同的代码来设置tableview文本,并且工作正常:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
if...
else if (segmentOptions == exchange) {
NSArray *array = [NSArray arrayWithArray:[exchangeDictionary objectForKey:[listOfExchanges objectAtIndex:indexPath.section]]];
cell.textLabel.text = …Run Code Online (Sandbox Code Playgroud)