Qt 5主窗体构成
1.菜单栏
菜单是一系列命令的列表。为了实现菜单、工具栏按钮、键盘快捷方式等命令的一致性,Qt使用动作(Action)来表示这些命令。Qt的菜单就是由一系列的QAction动作对象构成的列表,而菜单栏则是包容菜单的面板,它位于主窗口顶部、主窗口标题栏的下面。一个主窗口最多只有一个菜单栏。
2.状态栏
状态栏通常显示GUI应用程序的一些状态信息,它位于主窗口的底部。用户可以在状态栏上添加、使用Qt窗口部件。一个主窗口最多只有一个状态栏。
3.工具栏
工具栏是由一系列的类似于按钮的动作排列而成的面板,它通常由一些经常使用的命令(动作)组成。工具栏位于菜单栏的下面、状态栏的上面,可以停靠在主窗口的上、下、左、右四个方向上。一个主窗口可以包含多个工具栏。
4.锚接部件
锚接部件作为一个容器使用,以包容其他窗口部件来实现某些功能。例如,Qt设计器的属性编辑器、对象监视器等都是由锚接部件包容其他的Qt窗口部件来实现的。它位于工具栏区的内部,可以作为一个窗口自由地浮动在主窗口上面,也可以像工具栏一样停靠在主窗口的上、下、左、右四个方向上。一个主窗口可以包含多个锚接部件。
5.中心部件
中心部件处在锚接部件区的内部、主窗口的中心。一个主窗口只有一个中心部件。
菜单menu
QToolBar
这里注意action个button的作用
QPrintDialog 和QPrinter
QPrinter printer; //新建一个QPrinter对象
QPrintDialog printDialog(&printer,this); //(a)
if(printDialog.exec()) //(b)
{
//获得QTextEdit对象的文档
QTextDocument *doc =showWidget->text->document();
doc->print(&printer); //打印
}
头像放大旋转QMatrix
if(img.isNull()) //有效性判断
return;
QMatrix martix; //声明一个QMatrix类的实例
martix.scale(2,2); //(a)
img = img.transformed(martix);
//重新设置显示图形
showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
generic-cardcontainer-ui
镜像
void ImgProcessor::ShowMirrorVertical()
{
if(img.isNull())
return;
img=img.mirrored(false,true);
showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
}
void ImgProcessor::ShowMirrorHorizontal()
{
if(img.isNull())
return;
img=img.mirrored(true,false);
showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
}
文本编辑
字体设置
void MainWindow::showFontComboBox(const QString &fontName)
{
QTextCharFormat fmt; //创建一个QTextCharFormat对象
fmt.setFontFamily(fontName); //选择的字体名称设置给QTextCharFormat对象
mergeFormat(fmt);
}
void MainWindow::mergeFormat(const QTextCharFormat format)
{
QTextCursor cursor =showWidget->text->textCursor();
//获得编辑框中的光标
if(!cursor.hasSelection()) //(a)
cursor.select(QTextCursor::WordUnderCursor);
cursor.mergeCharFormat(format); //(b)
showWidget->text->mergeCurrentCharFormat(format); //(c)
}
字号设置
void MainWindow::updateFontSize(const QString &fontSize)
{
QTextCharFormat fmt;
fmt.setFontPointSize(fontSize.toFloat());
showWidget->text->mergeCurrentCharFormat(fmt);
}
加粗、鞋子、下划线
QTextCharFormat fmt;
fmt.setFontWeight(boldBtn->isChecked()?QFont::Bold:QFont:: Normal);
fmt.setFontItalic(italicBtn->isChecked());
fmt.setFontUnderline(underlineBtn->isChecked());
showWidget->text->mergeCurrentCharFormat(fmt);
颜色选择
void MainWindow::showColorBtn()
{
QColor color = QColorDialog::getColor();
if(color.isValid())
{
QTextCharFormat fmt;
fmt.setForeground(color);
showWidget->text->mergeCurrentCharFormat(fmt);
}
}
Qt 5排版功能
文本对齐
void MainWindow::showAlignment(QAction *act)
{
if(act==leftAction)
showWidget->text->setAlignment(Qt::AlignLeft);
if(act==rightAction)
showWidget->text->setAlignment(Qt::AlignRight);
if(act==centerAction)
showWidget->text->setAlignment(Qt::AlignCenter);
if(act==justifyAction)
showWidget->text->setAlignment(Qt::AlignJustify);
}
排序