- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究 qt - 在《C++ GUI Programming With Qt 4》一书中,我试图让所有代码都能正常工作。我在将自定义表格小部件中的内容选择转换为纯文本时遇到问题。
书中现有代码:
void MyTableWidget::mouseMoveEvent(QMouseEvent *event)
{
if (event->buttons() & Qt::LeftButton) {
int distance = (event->pos() - startPos).manhattanLength();
if (distance >= QApplication::startDragDistance())
performDrag();
}
QTableWidget::mouseMoveEvent(event);
}
void MyTableWidget::performDrag()
{
QString plainText = selectionAsPlainText();
if (plainText.isEmpty())
return;
QMimeData *mimeData = new QMimeData;
mimeData->setText(plainText);
mimeData->setHtml(toHtml(plainText));
mimeData->setData("text/csv", toCsv(plainText).toUtf8());
QDrag *drag = new QDrag(this);
drag->setMimeData(mimeData);
if (drag->exec(Qt::CopyAction | Qt::MoveAction) == Qt::MoveAction)
deleteSelection();
}
我正在尝试编写 selectionAsPlainText() 和 deleteSelection()。
QTableWidgetSelectionRange MyTableWidget::selectedRange() const
{
QList<QTableWidgetSelectionRange> ranges = selectedRanges();
if (ranges.isEmpty())
return QTableWidgetSelectionRange();
return ranges.first();
}
QString MyTableWidget::selectionAsPlainText()
{
QTableWidgetSelectionRange range = selectedRange();
QList<QTableWidgetItem *> items = selectedItems();
QString str;
for (int i=0;i<range.rowCount();i++){
for (int j=0;j<range.columnCount();j++){
// error on this line
str+=QString(items.at(i*(range.columnCount()-1)+j)->data(Qt::DisplayRole)));
if (j!= range.columnCount()-1)
str += "\t";
}
str += "\n";
}
return str;
}
在这个尝试中,我试图将 QTableWidgetItem
中的项目放在 QString
中,用 "\t"< 分隔
或 "\n"
。
我无法尝试任何类型的此类操作,因为我在尝试将任何内容放入 QString 时遇到错误。
到目前为止我尝试过的一切都给我一个错误
conversion from 'QTableWidgetItem* const' to 'QChar' is ambiguous
or
error: no matching function for call to 'QString::QString(QVariant)'
我不知道如何进行这种类型转换,我还没有看到有关如何指定类型转换的示例...虽然据我了解,选择数据的 Qt::DisplayRole,我应该隐含地有一个QString...
如何使这种类型转换起作用?
我包含了更多代码来表明 TableWidget 可能属于未知类型。
最佳答案
首先,大量嵌套的括号很难阅读。我建议将有问题的行分成几行。其次,从 QTableWidgetItem::data
返回的类型是一个 QVariant
,可以使用 QVariant::将其转换为
成员函数。另外,我认为 QString
toString()i*(range.columnCount()-1)
不是您想要的。
鉴于此,您的代码应如下所示:
int index = i*range.columnCount()+j;
QTableWidgetItem* item = items.at(index);
str += item->data(Qt::DisplayRole).toString();
关于c++ - 从 'QTableWidgetItem* const' 到 'QChar' 的转换......或者 QString......是不明确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25253534/
给定一个 QTableWidget,有没有办法为单元格 (QTableWidgetItem) 设置一个不同于显示值的“隐藏”值? 例如,我的单元格应显示“项目 1”文本,但双击它编辑应该仅针对值 1,
我想在QTableWidgetItem 中画一条线。为了划清界线,我重新实现了 QStyledItemDelegate::paint 方法。 但是,当我滚动或选择 QTableWidget 中的项目时
如果 QTableWidgetItem 已更改其文本,我正在寻找一种干净的方式来对事件使用react。我尝试使用 Signal QTableWidget::itemChanged(QTableWidg
我想将附加数据与插入表中的每个 QTableWidgetItem 相关联,以便将来在单击表项时使用该数据。但这些数据不应该是可见的。我怎样才能做到这一点? 最佳答案 您可以使用 QTableWidge
我在 PyQt5 中创建了一个表,并通过此方法检索单元格中的数据。但是当我尝试 QTableWidgetItem 中的单元格变为 None 时。那么,我如何解决这个问题以及如何在特定单元格中插入其他确
我想实现可以选择和取消选择 QTableWidget 内的多个 QTableWidgetItem 的功能,以便了解这些 QTableWidgetItem 的值和“位置”以供进一步使用。 QTableW
我正在使用 Qt 和 python(以及 pyqt)编写一个 QGIS 插件。 在 QtDesigner 中,我有一个 QTableWidget 对象,如果有办法获取列项类型,我真的很挣扎。 例如下表
我正在使用 PySide 库用 Python 编写一个应用程序。我有一个QTableWidget,它大约每秒更新一次。问题是,我希望能够手动更改数据,并且我认为如果我可以找出用户是否正在更改单元格中的
我的程序中有一个 QTableWidget。我希望它的行和列根据表格小部件中的时间条目改变颜色。当我第一次添加时间时,它将与当前系统时间进行比较,并且颜色更改确实生效,但随着时间的推移,它不会跟上并且
我有一个qtablewidgetitem,里面有一个QCheckbox 禁用qtablewigetitem时如下 flags = self.item(row+1, self.columns["
有没有办法在QTableWidgetItem中使用富文本? 目前我有这个: widgetItem = QtWidgets.QTableWidgetItem() widget = QtWidgets.Q
您可能知道,您可以使用 setCellWidget 为 QTableWidget 中的单元格设置小部件: table->setCellWidget(0, 0, new QProgressBar); 在
我正在尝试将 QTableWidgetItem 转换为子类。我有一个这样的类层次结构: (Parent -> Child) QTableWidgetItem -> SortableTableWidge
我有一个 QTableWidget 的子类,代码如下: connect(this, SIGNAL(cellChanged(int, int)), this, SLOT(pushCellChange(i
我有一个 QtGui.QTableWidgetItem,我通过下面的 createRow 函数添加到表格中: def createRow(self, listA): rowNum = self
以下 PyQt4 示例演示了我的问题。 QTableWidget 单元格中的文本很好地居中,直到您编辑单元格。当您编辑单元格时,文本左对齐。 我想在每个单元格的编辑过程中保持居中对齐。 import
我有一个QThread,它更新QTableWidget列值。当用户双击该列的一行时,QThread 停止更新值以让用户编辑上次读取的值。 如果用户按 Enter,则发出 cellChanged(int
我认为标题不言自明:给定一个 QTableWidget,其中的项目由 setItem 成员函数添加,我想知道每个项目的边距是多少。特别是,我想要这些单元格中左边距的宽度。 最佳答案 我准备了一个计算用
我有一个 QTableWidget,上面有一些 QTableWidgetsItems。有些项目使用复选框。我使用以下代码添加了复选框: QTableWidgetsItem->setCheckState
现在我可以在函数 eventFilter() 中处理我的 QTableWidget 中的所有按键(在调用 myTable->viewport()->installEventFilter( this);
我是一名优秀的程序员,十分优秀!