Название: Не могу додумать как правильно регулировать размер QHeaderView
Отправлено: CJ1 от Октябрь 02, 2012, 15:31
Обрабатываю сигнал от QHeaderView C++ (Qt) void MainWindow::slot_horizHeadRes(int p1, int p2, int p3) { QString s; s = ui->tableWidget->horizontalHeaderItem(p1)->text(); QFont f(s); QFontMetrics fm(f); }
А как изменить строчку так чтоб она в несколько рядов ставилась в зависимости от размера QHeaderView? Надо в строчку засовывать \r\n Но рассчитать не пойму как.
Название: Re: Не могу додумать как правильно регулировать размер QHeaderView
Отправлено: Пантер от Октябрь 02, 2012, 15:33
http://qt-project.org/doc/qt-5.0/qfontmetrics.html#width ?
Название: Re: Не могу додумать как правильно регулировать размер QHeaderView
Отправлено: CJ1 от Октябрь 02, 2012, 15:59
Не, мне надо вот понять как сам алгоритм придумать, после кокого символа вставлять \r\n
Название: Re: Не могу додумать как правильно регулировать размер QHeaderView
Отправлено: CJ1 от Октябрь 02, 2012, 16:47
Сделал вот так это почти что нужно... но не то C++ (Qt) void MainWindow::slot_horizHeadRes(int p1, int p2, int p3) { QString s; QFont f; QFontMetrics fm(f); s = ui->tableWidget->horizontalHeaderItem(p1)->text(); if (p2 < fm.width(s)-3) { s.insert(s.length()/2,"\r\n"); ui->tableWidget->setHorizontalHeaderItem(p1, new QTableWidgetItem(s)); } else { int l = s.indexOf("\r\n"); if (l != -1){ s.remove(l,2); ui->tableWidget->setHorizontalHeaderItem(p1, new QTableWidgetItem(s)); } } }
Название: Re: Не могу додумать как правильно регулировать размер QHeaderView
Отправлено: CJ1 от Октябрь 02, 2012, 17:33
Вот почти то что нужно! C++ (Qt) void MainWindow::slot_horizHeadRes(int p1, int p2, int p3) { QString s; QFont f; QFontMetrics fm(f); s = ui->tableWidget->horizontalHeaderItem(p1)->text(); if (p2 < fm.width(s.left(s.indexOf("\r\n")))+5) { s.insert(s.left(s.indexOf("\r\n")).length()/2,"\r\n"); ui->tableWidget->setHorizontalHeaderItem(p1, new QTableWidgetItem(s)); } else { if (p2 > fm.width(s) ){ int l = s.indexOf("\r\n"); if (l != -1){ s.remove(l,2); ui->tableWidget->setHorizontalHeaderItem(p1, new QTableWidgetItem(s)); } } } }
Название: Re: Не могу додумать как правильно регулировать размер QHeaderView
Отправлено: CJ1 от Октябрь 03, 2012, 08:37
Вроде получилось. Вот если кому то надо C++ (Qt) void MainWindow::slot_horizHeadRes(int p1, int p2, int p3) { QString s; QFont f; QFontMetrics fm(f); s = ui->tableWidget->horizontalHeaderItem(p1)->text(); if (p2 < fm.width(s.left(s.indexOf("\r\n"))) ){ s.insert(s.left(s.indexOf("\r\n")).length()/2,"\r\n"); ui->tableWidget->setHorizontalHeaderItem(p1, new QTableWidgetItem(s)); } if (p2 < fm.width(s.mid(s.lastIndexOf("\r\n"))) ){ int li = s.lastIndexOf("\r\n"); int li_plus = (s.length() - li) / 2; li += li_plus; s.insert(li,"\r\n"); ui->tableWidget->setHorizontalHeaderItem(p1, new QTableWidgetItem(s)); } if (p2 > fm.width(s) ){ int l = s.indexOf("\r\n"); if (l != -1){ s.remove(l,2); ui->tableWidget->setHorizontalHeaderItem(p1, new QTableWidgetItem(s)); } } }
|