我已经用Qt5制作了一个GUI:
但是右下角的表在右侧拉伸了“Pièce” QGroupBox。在将表添加到“Pièce”的内部布局之前,我已经调整了表的大小。
因为我不调整表的大小,所以具有以下GUI:
这是没有表的接口:
我已经尝试在添加表格后更新“Pièce”布局,在将其添加到布局之前先更新表格,并也更新“客户端:不适用”标签。
// Return the "Pièce" QGroupBox
static QGroupBox* ajout_cadre_administratif(QWidget& page)
{
QGroupBox* cadre_administratif = new QGroupBox(nom_section_piece);
QVBoxLayout* support_principal = new QVBoxLayout(cadre_administratif);
QHBoxLayout* support_client = ajouter_champs(titre_client.toStdString(), "N/A");
support_principal->addLayout(support_client);
QTableWidget* tableau = creation_tableau_references();
support_principal->addWidget(tableau);
support_client->update();
support_principal->update();
tableau->show();
return cadre_administratif;
}
// Create the table and return it
static QTableWidget* creation_tableau_references()
{
QTableWidget* table = new QTableWidget(0, 1);
initialisation_tableau(*table);
ajouter_element_tableau("STA-J915637925-B", *table);
ajouter_element_tableau("STA-J015837049-A", *table);
ajouter_element_tableau("STA-J915634923", *table);
/*ajouter_element_tableau("STA-J965536925-B", *table);
ajouter_element_tableau("STA-J915000001-B", *table);*/
table->setFixedSize(taille_optimale_tableau(*table, 3));
table->update();
return table;
}
// add an item to the the table named "tableau"
void ajouter_element_tableau(const std::string& element, QTableWidget& tableau)
{
QTableWidgetItem* item = new QTableWidgetItem(element.c_str());
tableau.insertRow(tableau.rowCount());
tableau.setItem(tableau.rowCount() - 1, 0, item);
}
// Init the table named "tableau"
static void initialisation_tableau(QTableWidget& tableau)
{
tableau.horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
tableau.setEditTriggers(QAbstractItemView::NoEditTriggers);
QStringList text(entete_tableau_references_piece);
tableau.setHorizontalHeaderLabels(text);
tableau.verticalHeader()->setVisible(false);
tableau.setColumnCount(1);
}
// return the optimum size of the table
const QSize taille_optimale_tableau(QTableWidget& table, const short int nombre_lignes_maximum)
{
int width = largeur_optimal(table, nombre_lignes_maximum);
int height = hauteur_optimale(table, nombre_lignes_maximum);
return QSize(width, height);
}
// return the optimum width of the table
static int largeur_optimal(QTableWidget& tableau, const short int nombre_lignes_maximum)
{
int width = tableau.verticalHeader()->width();
if(tableau.rowCount() <= nombre_lignes_maximum)
{
for(int i = 0; i < tableau.columnCount(); ++i)
{
width += tableau.columnWidth(i);
}
}
else {
for(int i = 0; i < nombre_lignes_maximum; ++i)
{
width += tableau.columnWidth(i);
}
width += tableau.verticalHeader()->sizeHint().width() + 3;
}
return width;
}
// return the optimum height of the table
static int hauteur_optimale(QTableWidget& tableau, const short int nombre_lignes_maximum)
{
int height = tableau.horizontalHeader()->height();
if(tableau.rowCount() <= nombre_lignes_maximum)
{
for(int i = 0; i < tableau.rowCount(); ++i)
{
height += tableau.rowHeight(i);
}
height += tableau.rowCount() - 1;
}
else {
for(int i = 0; i < nombre_lignes_maximum; ++i)
{
height += tableau.rowHeight(i);
}
height += nombre_lignes_maximum - 1;
}
return height;
}
我想要这样的东西: