2012-09-26 17 views
1

我有3个QLineEdit S(比如姓名,地址&电话号码),2 QPushButton(添加&修改)和QTableViewQt的 - 如何从QTableView中删除选定的行并将其复制到QLineEdit的

当我在所有的QLineEdit小号输入文字,如果我点击添加按钮,在QLineEdit S的所有3个文本应该在QTableView的第1行中添加。
同样,如果我在QLineEdit中输入3个文本并单击添加按钮,则文本应放置在QTableView的第2行。像这样,它应该继续。我做到了这一切,它工作正常。

现在,如果我从QTableView选择任何行,一旦我点击要从QTableView删除修改按钮选定行已经和物品应再次放入各自QLineEdit秒。

我该怎么做?

example.h文件

#ifndef EXAMPLE_H 
#define EXAMPLE_H 

#include <QWidget> 
#include <QStandardItemModel> 

namespace Ui { 
class Example; 
} 

class Example : public QWidget 
{ 
    Q_OBJECT 

public: 
    explicit Example (QWidget *parent = 0); 
    ~Example(); 

private slots: 
    void on_addButton_released(); 
    void on_modifyButton_released(); 

private: 
    Ui::Example*ui; 
    QStandardItemModel *model; 
}; 

#endif // EXAMPLE_H 

EXAMPLE.CPP

#include "Example.h" 

Example::Example(QWidget *parent) : 
    QWidget(parent), 
    ui(new Ui::Example) 
{ 
    ui->setupUi(this); 
    model = new QStandardItemModel(); 

    ui->tableView->setModel(model); 

} 

Example::~Example() 
{ 
    delete ui; 
} 

void Example::on_addButton_released() 
{ 
    model->setHorizontalHeaderItem(0, new QStandardItem(QString(" NAME "))); 
    model->setHorizontalHeaderItem(1, new QStandardItem(QString(" ADDRESS "))); 
    model->setHorizontalHeaderItem(2, new QStandardItem(QString(" PHONE NO "))); 

    QStandardItem *nameItem = new QStandardItem(ui->nameLineEdit->text()); 
    QStandardItem *addressItem = new QStandardItem(ui->addressLineEdit->text()); 
    QStandardItem *phoneItem = new QStandardItem(ui->phoneLineEdit->text()); 

    QList<QStandardItem*> row; 
    row << nameItem << addressItem << phoneItem; 

    model->appendRow(row); 

    ui->nameLineEdit->clear(); 
    ui->addressLineEdit->clear(); 
    ui->mobileLineEdit->clear(); 
    ui->emailLineEdit->clear(); 
} 

void Example::on_modifyButton_released() 
{ 


} 

回答

1

你想要做的是在点击修改按钮时,您QTableViewQItemSelectionModel访问选择。一旦你有选择,如果有的话,处理它。

例如:

void Example::on_modifyButton_released() 
{ 
    if(ui->myTableView) 
    { 
     QModelIndex currentIndex = ui->myTableView->selectionModel(); 

     // Make sure to check the index is valid, as the user 
     // may not have selected a row. 
     if(currentRow.isValid()) 
     { 
       // Add your code here to copy the data to 
       // your QLineEdit and remove the row from your 
       // QStandardModel. 
       ...     
     } 
    } 
} 

参考:

QTableViewhttp://qt-project.org/doc/qt-4.8/QTableView.html

QItemSelectionModelhttp://qt-project.org/doc/qt-4.8/QItemSelectionModel.html

+0

谢谢... :) –

相关问题