我已经找到了示例使用方法QTableView:http :
//doc.trolltech.com/4.5/sql-querymodel.html
可以正常工作。数据显示在中QTableView。
但是QTableView在此示例中,是在main.cpp文件中动态创建的。在我的应用程序中,我有主窗体,并QTableView在设计器中添加了。我尝试将其填充QTableView到构造函数中,但没有结果:
MainApplication::MainApplication(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainApplication)
{
ui->setupUi(this);
QMap<QString, double> currencyMap;
currencyMap.insert("AUD", 1.3259);
currencyMap.insert("CHF", 1.2970);
currencyMap.insert("CZK", 24.510);
CurrencyModel currencyModel;
currencyModel.setCurrencyMap(currencyMap);
ui->tableView_currencies->setModel(¤cyModel);
ui->tableView_currencies->setAlternatingRowColors(true);
ui->tableView_currencies->setWindowTitle(QObject::tr("Currencies"));
ui->tableView_currencies->show();
}
Run Code Online (Sandbox Code Playgroud)
QTableView在主窗体上显示为空,只有列和行标题可见。并且未显示数据。
是否与例子,其中分量喜欢的网站的人知道QTableView,QListView在设计中加入?在trolltech(nokia)教程中,所有组件都是动态创建的。
如何为 QTableView 或模型设置自定义排序方法?(我应该重新实现哪个功能)
默认排序算法是针对 strings 的,我想要一些特定列的数字排序方法。
谢谢。
我在表单中添加了一个表格小部件,并将垂直和水平标题设置为在属性编辑器中可见。但是,它们有时在实际执行过程中是不可见的。如果我实际查看 UI 文件,它会显示 verticalHeaderVisible 和 horizontalHeaderVisible 属性设置为 false,即使这些属性在属性编辑器中设置为 true。是否有其他属性与它们冲突?
属性编辑器:

结果:

用户界面文件:

如何读取和写入文本文件日期进入QTableView?
这就是我所拥有的,但我希望在将数据添加到表中时保存数据,当然可以在重新打开应用程序时将其读回.有没有我可以参考的教程?
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
model = new QStandardItemModel();
model->setRowCount(0);
ui->tableView->setModel(model);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QStandardItem *userName = new QStandardItem(ui->lineEdit_Name->text());
QStandardItem *userNumber = new QStandardItem(ui->lineEdit_Number->text());
QList<QStandardItem*> row;
row <<userName << userNumber;
model->appendRow(row);
}
Run Code Online (Sandbox Code Playgroud)
非常感谢
编辑--------------------------------
这对我有用:
添加功能:
void MainWindow::on_pushButto_Add_clicked() {
QStandardItem *userInput = new QStandardItem(ui->lineEdit->text());
QStandardItem *userInput2= new QStandardItem(ui->lineEdit_2->text());
QList<QStandardItem*> row;
row <<userInput << userInput2;
model->appendRow(row);
}
Run Code Online (Sandbox Code Playgroud)
保存功能:
void MainWindow::on_pushButton_Save_clicked()
{
QFile file("C:/Users/UserName/Practicing/Resources_Files/someFile.bin");
if (file.open(QIODevice::WriteOnly))
{
QDataStream stream(&file);
qint32 n …Run Code Online (Sandbox Code Playgroud) 我需要来自a的值QtableView,但如果没有从表中发出的信号,我不知道该怎么做.
该表从txt文件中获取其值.从表中,我想使用值,但没有在表中工作.该表只是一个缓冲区.那么如何从表中"获取"所有值,只需按a QPushButton,而不会从表本身发出任何信号?
我有一个设置了QTableModel的QTableview。
该视图可以修改,例如。行/列移动和删除等。
我有一个将表模型导出到带有QTableModel的excel / csv的函数,但是如果模型被修改,该模型不会反映视图,因此我有一个函数可以基于QTableViews当前布局创建一个新的表模型。
但是,我现在希望能够选择几行并仅导出选定的行,因此本质上我只需要基于视图中的选定行(而不是全部)创建模型。
下面显示了我当前的循环,
// Loop over the view's data and add it to the map for the model
for(int i = 0; i < rowIndexs.size(); ++i)
{
// Loop over visible headers only as we are matching the view not the model
for(int j = 0; j < headersIndexs.size(); ++j)
{
// Column is the logical index of the visual index of the current column, this values is used as which column to look at in …Run Code Online (Sandbox Code Playgroud) 我有一个显示80多列的QTableView.我为QTableView创建的子类允许我想要的标准表的功能,例如按列排序移动列和行隐藏列和行等.
然而我遇到的问题是视图的焦点.假设您拥有表格中的所有数据,您一直向右滚动,这样您就可以看到第70-80列(假设屏幕上一列有10列),如果我点击第80行的标题(订购)通过列80)表重新排序(如预期的那样)但是它也将视图跳转到最后一个聚焦单元格(据我所知,它是最后一次单击的单元格)
我想要做的不一定是重新关注被点击的列,因为这可能仍然会改变视图我想要的只是保持视图的焦点完全一样,而不是让它跳回最后一次单击的单元格的位置. ?
是否有焦点策略缺少一些标志,或者我需要获取当前视图并在鼠标点击重新排序表后将视图设置回该视图,如果是,那么如何才能完成.
我知道我没有为这个问题提供任何代码,但它似乎没有任何需要,因为它不是一个bug我想要修复更多的功能我不知道,如果你想看到任何只是评论
编辑:
我使用的是QSortFilterPorxyModel,这似乎设置了一次(当我this->setSortingEnabled(true);在构造初始调用后调用时,我的表模型再也没有调用sort.我有一个链接到标题点击信号的插槽,我将滚动条设置scrollTo()为点击索引,但我认为排序发生在这之后所以它什么都不做,任何想法,排序后发出什么信号,所以我可以抓住它们,然后设置视图可能?谢谢
我无法创建像这样的QGridLayout。

我尝试了但是失败了
QGridLayout *layout = new QGridLayout;
layout->addWidget(mytableview,0,0,1,3);
layout->addWidget(b1,1,0,1,1,Qt::AlignRight);
layout->addWidget(b2,1,1,1,1,Qt::AlignRight);
layout->addWidget(b3,1,2,1,1);
mainWindow->setLayout(layout);
Run Code Online (Sandbox Code Playgroud) 我是PyQt的新手,我正在开发一个包含QTableView的项目,其中一个列显示系统路径.我想添加一个QTreeView,以便用户可以单击+或>按钮来展开路径下面的内容.
这是我的基本实现:
from PyQt4 import QtGui
from PyQt4 import QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.resize(600,400)
self.setWindowTitle("My Basic Treeview")
self.treeview = QtGui.QTreeView(self)
self.treeview.model = QtGui.QFileSystemModel()
self.treeview.model.setRootPath('/opt')
self.treeview.setModel(self.treeview.model)
self.treeview.setColumnWidth(0, 200)
self.setCentralWidget(self.treeview)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
虽然,在上面的例子中,我得到所有文件夹,但我只想要/opt路径及其下面的文件夹.
import operator
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MyWindow(QWidget):
def __init__(self, data_list, header, *args):
QWidget.__init__(self, *args)
# setGeometry(x_pos, y_pos, width, height)
self.setGeometry(300, 200, 570, …Run Code Online (Sandbox Code Playgroud) 当我点击列标题时,我需要在表格中对列进行排序.但现在我不能,那是我的桌子:

如果单击标题,则无法执行操作.
这是我的c ++ QT代码:
void showTable()
{
connOpen();
QSqlQueryModel * myModel=new QSqlQueryModel();
QSqlQuery select;
if (!select.exec("select * from tab")) {
QMessageBox::critical(this, tr("Error"), select.lastError().text());
}
else {
myModel->setQuery(select);
ui->tableView->setModel(myModel);
}
connClose();
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
qtableview ×10
qt ×6
c++ ×4
pyqt ×2
python ×2
qt5 ×2
pyqt4 ×1
qgridlayout ×1
qmodelindex ×1
qsqlquery ×1
qt4 ×1
qt4.7 ×1