Делаю текстовый редактор. Нужно чтобы при изменении значения в QFontComboBox* FStyleList в текстовоее поле QTextEdit* MainTextEdit устанавливался нужный шрифт. Есть фрагмент кода.
в главном классе:
Fontstr = new QString (this);
MainTextEdit = new QTextEdit(this);
MainTextEdit->setMinimumSize(300, 300);
FStyleList = new QFontComboBox(this);
connect (FStyleList, SIGNAL(valueChanged()), this, SLOT(fontChanged(QString)));
описание функции:
void MainClass::fontChanged(Fontstr){
QTextCursor cursor = MainTextEdit->textCursor();
MainTextEdit->selectAll();
Fontstr = FStyleList->currentFont().toString();
MainTextEdit->setFontFamily(font.fromString(&fontstr));
cursor.clearSelection();
MainTextEdit->setFont(font);
}
В заголовчном файле:
class MainClass : public QMainWindow
{
Q_OBJECT
public:
QFontComboBox *FStyleList;
QFont *font;
QString *Fontstr;
QTextEdit *MainTextEdit;
private slots:
void fontChanged(QString Fontstr);
ошибки:
при определении Fontstr в главном классе
conversion from 'MainClass* const' to 'QChar' is ambiguous
В описании функции
variable or field 'fontChanged' declared void
и
"Fontstr" was not declared in this scope
Помогите исправить эти ошибки и корректно получить значение из QFontComboBox и установить его в QTextEdit
Скриншот
Описание слота
void MainClass::setTextEditFont(const QFont& f){
QFont newFont = f;
newFont.setPixelSize(FontsizeSpin->value());
MainTextEdit->setFont(newFont);
Подключение слота
connect(FStyleList, SIGNAL (currentFontChanged(const QFont&)), this,
SLOT(MainClass::setTextEditFont(const QFont&)));
Эти два виджета прекрасно подходят друг к другу с точки зрения установки шрифта:
connect(FStyleList, SIGNAL(currentFontChanged(const QFont&)), MainTextEdit, SLOT(setCurrentFont(const QFont&)));
Слот QTextEdit::setCurrentFont изменят шрифт у выделенного текста, если же необходимо изменить шрифт у всего документа, то надо использовать метод QWidget::setFont:
// коннект через лямбду
connect(FStyleList, &QFontComboBox::currentFontChanged, [&](const QFont& f)
{
MainTextEdit->setFont(f);
});
Дополнение. Если необходимо устновить шрифт в QTextEdit с учетом других параметров (например, размер шрифта). Где-то в классе приложения создаем слот, например setTextEditFont(const QFont&), соответственно:
//В конструкторе
connect(FStyleList, &QFontComboBox::currentFontChanged, this, &MainClass::setTextEditFont);
//В слоте
void MainClass::setTextEditFont(const QFont& f)
{
QFont newFont = f;
// Учитываем размер шрифта
newFont.setPixelSize(/*виджет с размером шрифта*/);
// Устанавливаем новый шрифт в QTextEdit (для выделенного текста)
MainTextEdit->setCurrentFont(newFont);
// Или глобально, для всего текста в MainTextEdit
// MainTextEdit->setFont(newFont);
}
Продвижение своими сайтами как стратегия роста и независимости