Добрый вечер.
Столкнулся с такой проблемой.
в слоте paint вывожу текст в делегате:
QPainter pt;
QRect rect = myOption.rect;
int otstup(20);
rect.setX(myOption.rect.x() + otstup);
rect.setWidth(text_width - otstup);
pt.begin(painter->device());
QFont font = painter->font();
font.setBold(false);
pt.setFont(font);
const QString p(post + "/");
pt.drawText(rect.x(), rect.y() + 2, rect.width(), rect.height(), 0, p, &rect);
otstup += QFontMetrics(pt.font()).width(post + "/", -1);
rect.setX(myOption.rect.x() + otstup);
rect.setWidth(text_width - otstup);
font.setBold(true);
pt.setFont(font);
const QString d(date + "/");
pt.drawText(rect.x(), rect.y(), rect.width(), rect.height(), 0, d, &rect);
otstup += QFontMetrics(pt.font()).width(date, -1);
font.setBold(false);
pt.setFont(font);
otstup += QFontMetrics(pt.font()).width("/", -1);
rect.setX(myOption.rect.x() + otstup);
rect.setWidth(text_width - otstup);
const QString n(num);
pt.drawText(rect.x(), rect.y(), rect.width(), rect.height(), 0, n, &rect);
pt.end();
drawDisplay(painter, myOption, myOption.rect, display_text);
А если подебажить, на какой именно строке вылетает?
Ну я не пробовал ) Во всяком случае если например QImage::pixel() указывать совсем неверные координаты, то программа сначала зависает, выводя в output кучу всего, а может и грохнуться вообще ) Один раз вроде было такое, если я ничего не путаю)
Мда, чето с русским совсем беда у меня ) Чем больше сижу за компом, тем все хуже(
int column_width(23);
column_width += QFontMetrics(myOption.font).width(post + "/", -1);
QRect rect = myOption.rect;
rect.setY(rect.y() + 2);
rect.setX(rect.x() + 16);
drawDisplay(painter, myOption, rect, post + "/");
rect.setX(rect.x() + QFontMetrics(myOption.font).width(post + "/", -1));
myOption.font.setBold(true);
drawDisplay(painter, myOption, rect, date + "/");
rect.setX(rect.x() + QFontMetrics(myOption.font).width(date, -1));
column_width += QFontMetrics(myOption.font).width(date, -1);
myOption.font.setBold(false);
rect.setX(rect.x() + QFontMetrics(myOption.font).width("/", -1));
column_width += QFontMetrics(myOption.font).width("/" + num, -1);
if (column_width != view->columnWidth(gtd_ngnum))
{
view->setColumnWidth(gtd_ngnum, column_width);
}
drawDisplay(painter, myOption, rect, num);
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)