QLineEdit保存数据的问题和疑惑,新手求思路
按理说这个应该是非常简单的思路,以前都是做bs的 思路转不过来。求思路。如下图:
一个表格(实际上是QTreeWidget)制作的,
当修改完 其中的一行QLineEdit结束的时候,即焦点移出表单后,自动保存最新的数据进入数据库。
应该是使用信号槽检测当停止输入或者按下enter键时候
请问应该怎么处理呢?表单内容如何获取?要修改的ID 怎么获取?在线等。。都折腾一天了 --------------------编程问答-------------------- 你这个需要设置
setItemText(); --------------------编程问答--------------------
怎么设置?能说详细些吗? 最主要 是如何获取到ID 呀? --------------------编程问答-------------------- 在QLineEdit编辑完成发送editfinished信号,
在该信号接收槽里面(你定义的)设置项文本。 --------------------编程问答-------------------- 你的文本框是怎么弄的,先贴出你的代码,我才好帮你 --------------------编程问答-------------------- 这是我使用QTableWidget做的,文本框编辑就是使用我上面的方法
--------------------编程问答--------------------
能贴几段核心代码吗? --------------------编程问答-------------------- 单击时候,分配一个控件
QLineEdit *pleWidget = new QLineEdit(this);
setCellWidget(row, col, pleWidget);
connect(pleWidget,
SIGNAL(editFinished(const QString &)),
this,
SLOT(rxEditFinished(const QString &)));
void rxEditFinished()
{
setItemText(row, col, pleWidget->text());
} --------------------编程问答-------------------- 如果你数据量大的话,你最好使用mvc处理方式,http://blog.csdn.net/rabinsong/article/details/8452946看我这篇关于mvc的处理方式 --------------------编程问答--------------------
我的是treewidget ,应该怎么处理呢?
代码如下:
foreach (_MSGSETINFO _info, msgplugin->_msgformart.msgsetinfo_list) {
if(""==_info.segmentid){
QStringList contentList;
contentList << QString::number(_info.seq)<<_info.set_format_name << _info.setid<<_info.occ<<_info.rpt
<<"";
QTreeWidgetItem *pSetItem = new QTreeWidgetItem(treeWidget, contentList);
setedit = new QLineEdit(_info.field_occurrence);
treeWidget->setItemWidget(pSetItem,5,setedit);
connect(setedit,SIGNAL(editFinished(const QString&)),this,SLOT(rxEditFinished(const QString &)));
pSetItem->setTextColor(5,Qt::gray);
}}
麻烦您了 。 --------------------编程问答-------------------- 这个我回家再帮你弄下吧,现在没空 --------------------编程问答-------------------- 响应editingFinished信号,在槽中拿数据保存 --------------------编程问答-------------------- 头文件定义
#include <qtreewidget.h>
#include <qlineedit.h>
class CTreeWidget : public QTreeWidget
{
Q_OBJECT
public:
CTreeWidget(QWidget *parent = NULL) : QTreeWidget(parent)
{
connect(this,
SIGNAL(itemClicked(QTreeWidgetItem *, int)),
this,
SLOT(rxItemClicked(QTreeWidgetItem *, int)));
QStringList itemList;
itemList << "test1";
QTreeWidgetItem *pRootItem = new QTreeWidgetItem(this, itemList);
QList <QTreeWidgetItem *> items;
items.append(pRootItem);
itemList.clear();
itemList << "test2";
pRootItem = new QTreeWidgetItem(this, itemList);
items.append(pRootItem);
addTopLevelItems(items);
}
private slots:
void rxItemClicked(QTreeWidgetItem *item, int column)
{
QLineEdit *pleEdit = new QLineEdit(this);
setItemWidget(item, column, pleEdit);
connect(pleEdit,
SIGNAL(editingFinished()),
this,
SLOT(rxEditFinished()));
}
void rxEditFinished()
{
QList <QTreeWidgetItem *> itemList = selectedItems();
if (!itemList.isEmpty())
{
QTreeWidgetItem *pItem = itemList.at(0);
QWidget *pWidget = itemWidget(pItem, 0);
if (pWidget != NULL)
{
QLineEdit *pleWidget = (QLineEdit *)pWidget;
pleWidget->hide();
pItem->setText(0, pleWidget->text());
}
}
}
};
int main(int argc, char**argv)
{
QApplication app(argc,argv);
CTreeWidget widget;
widget.show();
return app.exec();
}
上面的void rxEditFinished()最好由焦点离开事件触发,这样更好
补充:移动开发 , Qt