当前位置: 代码迷 >> QT开发 >> 关于tablewidget 查询跟更新数据(多个窗口)
  详细解决方案

关于tablewidget 查询跟更新数据(多个窗口)

热度:37   发布时间:2016-04-25 04:20:32.0
关于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这些。。没写。只是伪代码哈。

------其他解决方案--------------------
把信号槽关联好就可以了
------其他解决方案--------------------
引用:
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:
……


在B窗口点OK按钮后要增加tableWidget数据或更新数据,不会有冲突吗?
------其他解决方案--------------------
如果判断到A中已经有从B传过来的数据,该如何处理才能是的程序能够继续运行?是关闭哪个窗口还是怎么样?
------其他解决方案--------------------
引用:
引用:1 a中当你弹出b窗口的时候。要记录当前选中的item.
2 b的返回值和a.currentItem.text() 做比较。QVarinat(b.returnValue).toXXX();进行比较咯。
3 得到b的返回数据后更新a.tableWidget.currentItem的text就好了哇?


a.h
c……
不会冲突。都是在gui线程里 顺序执行的。
------其他解决方案--------------------
引用:
如果判断到A中已经有从B传过来的数据,该如何处理才能是的程序能够继续运行?是关闭哪个窗口还是怎么样?
直接连接信号槽。当编辑完了 发出信号,这个时候b.hide()就好了。 下次show一下。
------其他解决方案--------------------
void B:onButtonClicked()
  相关解决方案