在qt的mainwindows中9.能够使用字体选择组合框更改显示字体 10.右键textedit内部,弹出式菜单,能够关闭程序和选择字体。
时间: 2024-02-16 11:03:37 浏览: 37
9. 要在Qt的MainWindow中使用字体选择组合框更改显示字体,可以通过以下步骤实现:
1. 在MainWindow的构造函数中创建一个QFontComboBox对象,用于选择字体。
2. 将QFontComboBox对象添加到MainWindow的工具栏中。
3. 连接QFontComboBox对象的currentFontChanged()信号到一个槽函数,用于更改MainWindow中的字体。
下面是示例代码:
```cpp
// 在MainWindow的构造函数中创建QFontComboBox对象
QFontComboBox *fontComboBox = new QFontComboBox(this);
// 将QFontComboBox对象添加到MainWindow的工具栏中
ui->mainToolBar->addWidget(fontComboBox);
// 连接QFontComboBox对象的currentFontChanged()信号到槽函数
connect(fontComboBox, &QFontComboBox::currentFontChanged, this, &MainWindow::onFontComboBoxChanged);
// 槽函数实现
void MainWindow::onFontComboBoxChanged(const QFont &font)
{
// 更改MainWindow中的字体
ui->textEdit->setFont(font);
}
```
10. 要在textedit内部实现弹出式菜单,可以通过以下步骤实现:
1. 在MainWindow的构造函数中创建一个QMenu对象,用于弹出式菜单。
2. 在textedit的构造函数中设置上下文菜单策略为Qt::CustomContextMenu。
3. 连接textedit的customContextMenuRequested()信号到一个槽函数,用于弹出QMenu对象。
4. 在槽函数中添加QAction对象到QMenu对象中,用于关闭程序和选择字体。
5. 显示QMenu对象。
下面是示例代码:
```cpp
// 在MainWindow的构造函数中创建QMenu对象
QMenu *menu = new QMenu(this);
// 在textedit的构造函数中设置上下文菜单策略为Qt::CustomContextMenu
ui->textEdit->setContextMenuPolicy(Qt::CustomContextMenu);
// 连接textedit的customContextMenuRequested()信号到槽函数
connect(ui->textEdit, &QTextEdit::customContextMenuRequested, this, [=](const QPoint &pos) {
// 添加QAction对象到QMenu对象中,用于关闭程序和选择字体
QAction *closeAction = new QAction(tr("Close"), this);
QAction *fontAction = new QAction(tr("Font"), this);
connect(closeAction, &QAction::triggered, this, &MainWindow::close);
connect(fontAction, &QAction::triggered, this, [=]() {
bool ok;
QFont font = QFontDialog::getFont(&ok, ui->textEdit->font(), this);
if (ok) {
ui->textEdit->setFont(font);
}
});
menu->addAction(closeAction);
menu->addAction(fontAction);
// 显示QMenu对象
menu->exec(ui->textEdit->viewport()->mapToGlobal(pos));
});
```
需要注意的是,mapToGlobal()函数用于将textedit中的坐标转换为屏幕坐标。在这个例子中,使用viewport()函数获取textedit的视口,然后将pos转换为全局坐标。