У меня странная проблема, когда я запускаю свою программу Qt с помощью Qtcreator или в папке, созданной Qtcreator (projectname-build-desktop), она работает, но если я хочу скомпилировать код с помощью qmake и make, я получаю Ошибка сегментации при запуске.
GDB говорит мне, что:
Программа получила сигнал SIGSEGV, Ошибка сегментации.
0x0089bc37 в QTableView :: verticalHeader () const () из /usr/lib/libQtGui.so.4
проблема связана с функцией, заполняющей QtableWidget. Как это возможно, что это работает в одном случае, а не в другом?
Вот функция:
void Xml::ajout_ligne_nouveaute (Ui::MainWindow * ui, QString type, QString nom,QString artiste)
{
is_there_new = true;
ui->table_new->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->table_new->setSelectionBehavior(QAbstractItemView::SelectRows);
// makes the cells more little
QHeaderView *verticalHeader = ui->table_music->verticalHeader();
verticalHeader->setDefaultSectionSize(verticalHeader->fontMetrics().height()+3);
ui->table_new->setShowGrid(false);
// auto dimention
QHeaderView *headers = ui->table_new->horizontalHeader();
headers->setResizeMode(QHeaderView::Stretch);
// column number
ui->table_new->setColumnCount(3);
// column name
QStringList header;
header << "Type" << "Name" << "Artist" ;
ui->table_new->setHorizontalHeaderLabels ( header );
// remove left header
ui->table_new->verticalHeader()->hide();
// number of current columns
ui->table_new->setRowCount(offset_courant_nouveaute);
// one item by cell
QTableWidgetItem * name = new QTableWidgetItem(nom, 1000);
QTableWidgetItem * artist = new QTableWidgetItem(artiste, 1000);
QTableWidgetItem * typ = new QTableWidgetItem(type, 1000);
ui->table_new->setItem(offset_courant_nouveaute-1, 0, name);
ui->table_new->setItem(offset_courant_nouveaute-1, 1, artist);
ui->table_new->setItem(offset_courant_nouveaute-1, 2, typ);
if(offset_courant_nouveaute%2)
{
QColor * couleur = new QColor( 227, 248, 255, 255);
typ->setBackgroundColor(*couleur);
artist->setBackgroundColor(*couleur);
name->setBackgroundColor(*couleur);
}
offset_courant_nouveaute ++;
}