关于tablewidget 查询和更新数据(多个窗口)
目前有main.ui main.h main.cpp , a.ui a.h a.cpp, b.ui b.h b.cpp. 在a.ui中有tablewidget,编辑按钮。
main窗口通过按钮弹出 A窗口,A窗口通过按钮弹出B窗口,在B窗口中输入数据,点OK按钮后显示到B窗口的tablewidget。有两个问题:
1. 当在B窗口输入数据点OK按钮后,如何判断传过来的数据和tablewidget中已保存的数据是否相同;
2. 当我点击A窗口的编辑按钮时,弹出B窗口并修改数据点OK后更新原来的数据,该如何实现?
如果可以的话请详细点,谢谢!
[最优解释]
1 a中当你弹出b窗口的时候。要记录当前选中的item.
2 b的返回值和a.currentItem.text() 做比较。QVarinat(b.returnValue).toXXX();进行比较咯。
3 得到b的返回数据后更新a.tableWidget.currentItem的text就好了哇?
a.h
class A
{
private slots:
void upDateTableWidget(QString);
private:
B *m_b;
QTableWidget *m_tableWidget;
}
a.cpp
A:A()
{
m_b = new B(XX);
connect(m_b,SIGNAL(returnValue(QString),this,SLOT(upDateTableWidget(QString)));
}
A:upDateTableWidget(QString value)
{
if(m_tableWidget)
{
m_tableWidget->currentSelectedItem->setText(value);
}
}
b.h
Class B
{
signals:
void returnValue(QString);
private slots:
void onButtonClicked();
private:
m_button;
m_lineEdit;
}
b.cpp
B:B()
{
connect(m_button),SIGNAL(clicked()),this,SLOT(onButtonClicked());
}
void B:onButtonClicked()
{
QString strRet = m_lineEdit->text();
emit returnValue(strRet);
}
类似这种哈。该show的show..改隐藏的隐藏。。Q_OBJECT这些。。没写。只是伪代码哈。
[其他解释]
把信号槽关联好就可以了
[其他解释]
{
QString strRet = m_lineEdit->text();
emit returnValue(strRet);
}
[其他解释]
void B:onButtonClicked()
{
QString ret = m_lineEdit->text();
QString strRet = m_lineEdit->text();
emit returnValue(strRet);
emit hanle(ret );
}
这样不会有冲突?
[其他解释]
另外我在发送完信号后清空m_lineEdit->text();会瞬间出现原来的数据,我在构造函数里清空也一样,这个该如何解决呢?
[其他解释]
你是要清空lineEdit的数据?
m_linEidt->setText("");
构造函数只有在对象生成的时候才调用。。。。。
[其他解释]
当我在B窗口中添加数据点击OK按钮后在A窗口中有显示,我在A窗口中点ADD按钮后会B窗口会保留上次输入的数据,我在构造函数调用m_linEidt->setText(""); 当我在A窗口中点ADD按钮后弹出B窗口,仍然会瞬间出现上次的数据后消失,有没办法避免出现这种情况?
[其他解释]
void B:onButtonClicked()
{
QString ret = m_lineEdit->text();
QString strRet = m_lineEdit->text();
emit returnValue(strRet);
emit hanle(ret );
//在这里清空
m_lineEdit->setText(;;;
}
[其他解释]