Reputation: 21
I'm creating a program that displays a list of customers to a QTableWidget. The table will not out put until one of the buttons are clicked. Each button will output the correct items, however, for example, when i click "Key Customers" then "Show All" table will not change/output the new items to the table.
--
I want the table to clear its items then re-display new items on the same table widget.
--
I had this working before but didnt save the changes on the repo.
This is how the window is displayed.
slot code:
///
/// \brief AdminWindow::on_showAll_Button_clicked
/// Displays a QTableWidget populated by all items in the customer list
///
void AdminWindow::on_showAll_Button_clicked()
{
QStringList header;
Customer* ptr=NULL; /// \brief points to the current obj being output
int row=0; /// \brief current row
int col=0; /// \brief current col
ptr=CList.list.returnObj();
ui->tableWidget->reset();
header << "Name" << "Street Address" << "City Address" << "Rating" <<
"Priority";
ui->tableWidget->setHorizontalHeaderLabels(header);
while(ptr!=NULL)
{
ui->tableWidget->setRowCount(row+1);
ui->tableWidget->setColumnCount(col);
col=0;
QTableWidgetItem* newName = new QTableWidgetItem
(ptr->getName());
ui->tableWidget->setItem(row-1, col, newName);
col=1;
QTableWidgetItem* newStrtAd = new QTableWidgetItem
(ptr->getStreetAd());
ui->tableWidget->setItem(row-1, col, newStrtAd);
col=2;
QTableWidgetItem* newCtyAd = new QTableWidgetItem
(ptr->getCityAd());
ui->tableWidget->setItem(row-1, col, newCtyAd);
col=3;
QTableWidgetItem* newRate = new QTableWidgetItem
(ptr->getRating());
ui->tableWidget->setItem(row-1, col, newRate);
col=4;
QTableWidgetItem* newKey = new QTableWidgetItem
(ptr->getKeyCust());
ui->tableWidget->setItem(row-1, col, newKey);
CList.list.getNext();
ptr=CList.list.returnObj();
row++;
col++;
}
}
///
/// \brief AdminWindow::on_KeyButton_clicked
/// Displays a QTableWidget populated by the customer list and filtered
/// to display Key Customers
///
void AdminWindow::on_KeyButton_clicked()
{
QStringList header;
Customer* ptr=NULL; /// \brief points to the current obj being output
int row=0; /// \brief current row
int col=0; /// \brief current col
ptr=CList.list.returnObj();
ui->tableWidget->reset();
header << "Name" << "Street Address" << "City Address" << "Rating" <<
"Priority";
ui->tableWidget->setHorizontalHeaderLabels(header);
while(ptr!=NULL)
{
if(ptr->getKeyCust()=="key")
{
ui->tableWidget->setRowCount(row+1);
ui->tableWidget->setColumnCount(col);
col=0;
QTableWidgetItem* newName = new QTableWidgetItem
(ptr->getName());
ui->tableWidget->setItem(row-1, col, newName);
col=1;
QTableWidgetItem* newStrtAd = new QTableWidgetItem
(ptr->getStreetAd());
ui->tableWidget->setItem(row-1, col, newStrtAd);
col=2;
QTableWidgetItem* newCtyAd = new QTableWidgetItem
(ptr->getCityAd());
ui->tableWidget->setItem(row-1, col, newCtyAd);
col=3;
QTableWidgetItem* newRate = new QTableWidgetItem
(ptr->getRating());
ui->tableWidget->setItem(row-1, col, newRate);
col=4;
QTableWidgetItem* newKey = new QTableWidgetItem
(ptr->getKeyCust());
ui->tableWidget->setItem(row-1, col, newKey);
CList.list.getNext();
ptr=CList.list.returnObj();
row++;
col++;
}else
{
CList.list.getNext();
ptr=CList.list.returnObj();
}
}
}
///
/// \brief AdminWindow::on_NonKeyButton_clicked -
/// Displays a QTableWidget populated by the customer list and filtered
/// to display only Non-Key customers
///
void AdminWindow::on_NonKeyButton_clicked()
{
QStringList header;
Customer* ptr=NULL; /// \brief points to the current obj being output
int row=0; /// \brief current row
int col=0; /// \brief current col
ptr=CList.list.returnObj();
ui->tableWidget->reset();
header << "Name" << "Street Address" << "City Address" << "Rating" <<
"Priority";
ui->tableWidget->setHorizontalHeaderLabels(header);
while(ptr!=NULL)
{
if(ptr->getKeyCust()!="key")
{
ui->tableWidget->setRowCount(row+1);
ui->tableWidget->setColumnCount(col);
col=0;
QTableWidgetItem* newName = new QTableWidgetItem
(ptr->getName());
ui->tableWidget->setItem(row-1, col, newName);
col=1;
QTableWidgetItem* newStrtAd = new QTableWidgetItem
(ptr->getStreetAd());
ui->tableWidget->setItem(row-1, col, newStrtAd);
col=2;
QTableWidgetItem* newCtyAd = new QTableWidgetItem
(ptr->getCityAd());
ui->tableWidget->setItem(row-1, col, newCtyAd);
col=3;
QTableWidgetItem* newRate = new QTableWidgetItem
(ptr->getRating());
ui->tableWidget->setItem(row-1, col, newRate);
col=4;
QTableWidgetItem* newKey = new QTableWidgetItem
(ptr->getKeyCust());
ui->tableWidget->setItem(row-1, col, newKey);
CList.list.getNext();
ptr=CList.list.returnObj();
row++;
col++;
}else
{
CList.list.getNext();
ptr=CList.list.returnObj();
}
}
}
I've tried all the ui->tableWidget->clear..() and ui->tableWidget->reset() methods to no avail. Thanks for the help in advance!
Upvotes: 1
Views: 2637
Reputation: 2881
I believe that you're looking for tableWidget->setRowCount(0)
. This function clear the table, but not the header labels. I'm using it and it works better than clear
and reset
methods.
Upvotes: 0