Название: QListView и QPainter Отправлено: DruidCat от Май 15, 2017, 10:03 Друзья, помогите, я в тупике. Пишу свой диалог выбора шрифтов. Всё получается, кроме двух вещей:
1) В списке доступных шрифтов выделенный шрифт не фокуссируется, в системе много шрифтов, и список получается очень длинный, и приходится листать мышкой до выделенного шрифта, а хотелось бы, чтобы список автоматически пролистывается в QListView и выделенный шрифт был по середине этого списка. Код: QFontDatabase fdbShrifti; 2) И вторая моя боль, это показать пример отображения шрифта. В учебнике нашёл пример: Код: QPainter pntShrift(this); Название: Re: QListView и QPainter Отправлено: gil9red от Май 15, 2017, 10:31 2. Создаете наследник QWidget, в нем переопределяете метод paintEvent и в этом методе тот код вызываете
По поводу 1. вам явно не нужно создавать новую QItemSelectionModel, т.к. по умолчанию у списка она есть Название: Re: QListView и QPainter Отправлено: DruidCat от Май 15, 2017, 11:38 QItemSelectionModel удалил и ничего не поменялось. Спасибо за совет, код стал более понятным. Но автофокусировка на выделенном шрифте не заработала. По поводу второго пункта я не понял. Я могу создать окно с QWidget и впихнуть тот код, он заработает. Проблема в том, что мне нужно использовать отображение шрифта в форме UI, где по так же будет нарисован список доступных шрифтов, его размеров, стиль и пресловутое наглядное отображение этого шрифта как есть. Или же я вас не понял по причине отсутствия моих очень скромных знаний.
Название: Re: QListView и QPainter Отправлено: gil9red от Май 15, 2017, 12:05 1. Накидал код, работает (долго было запускать креатор, поэтому на питоне)
Код
2. Тут 2 варианта: * Оставляете место в UI для того виджета, после добавляете в конструкторе класса (наверное это MainWindow) * Помещаете виджет на UI, правой кнопкой и тыкаете на "Преобразовать в..." после нужно выбрать тот виджет с переопределенным paintEvent'ом В общем, тот виджет в любом случае делать нужно будет Название: Re: QListView и QPainter Отправлено: DruidCat от Май 15, 2017, 13:50 Спасибо большое, первую проблему решил, добавив строку:
Код: ui->listView->setCurrentIndex(mndShrift); PS: GNU/Linux рулит и питон тоже рулит! |