在 Qt Widget Application (c ) 中,我的 *.ui 檔案的一部分由一個 QListView 組成,其中兩個 QTextEdits 作為其專案,如下圖所示。

如您所見,自定義小部件包括兩個 QTextEdit,每個都有其文本和樣式表。正如我在網上搜索的那樣,有像 HtmlDelegate 類這樣的解決方案,用于在 QListView 上呈現專案的文本。但是這些類只提供一個QTextEdit 作為 QListView 的專案。將來,我想將 QListView 滾動狀態與 Podcast 應用程式等 QMultimedia 狀態同步。有人有什么主意嗎?
uj5u.com熱心網友回復:
首先,您應該像這樣創建自定義小部件:

然后你使用這樣的函式將它添加到你的模型中:QListViewsetIndexWidget
QStandardItemModel *model = new QStandardItemModel(120, 1);
ui->listView->setModel(model);
for (int r = 0; r < 120; r )
{
ui->listView->setIndexWidget(model->index(r, 0), new CustomTextEdits);
}
最后結果:

你可以在這里看到源代碼:
https://github.com/parisa-hr/SO-addwidgettoqlistview
uj5u.com熱心網友回復:
我不清楚,但是,我們不能使用 QMLListView來ListModel處理資料和渲染嗎?
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick3D
Page {
ListView {
anchors.fill: parent
model: ListModel {
id: items
Component.onCompleted: {
for (let i = 0; i < 20; i ) {
let enText = "English Text " (i 1);
let itText = "Its Translate " (i 1);
append( { enText, itText } );
}
}
}
ScrollBar.vertical: ScrollBar {
width: 20
policy: ScrollBar.AlwaysOn
}
spacing: 2
delegate: Frame {
width: ListView.view.width - 20
background: Rectangle {
border.color: "black"
border.width: 2
}
ColumnLayout {
width: parent.width
TextInput {
Layout.fillWidth: true
text: enText
horizontalAlignment: Qt.AlignHCenter
font.pointSize: 12
onAccepted: enText = text
}
Rectangle {
Layout.fillWidth: true
Layout.preferredHeight: 2
color: "steelblue"
}
TextInput {
Layout.fillWidth: true
text: itText
horizontalAlignment: Qt.AlignHCenter
font.pointSize: 12
font.italic: true
color: "red"
onAccepted: itText = text
}
}
}
}
}
您可以在線試用!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/532546.html
標籤:C qtqlistviewqitemdelegateqstyleditemdelegate
上一篇:如何在qtcpp中播放gif?
