QHBoxLayout:在水平方向排列窗口部件,从左到右;
QVBoxLayout:在垂直方向排列窗口部件,从上到下;
QGridLayout:把各个窗口部件排列在一个网格中。
1.#include "mainwindow.h"
2.#include
3.#include
4.#include
5.#include
6.#include
7.#include
8.
9.int main(int argc, char *argv[])
10.{
11. QApplication a(argc, argv);
12. QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));//设定字符集为UTF-8
13.
14. QWidget *widget = new QWidget ;
15. QLabel *labelaccount = new QLabel(QObject::tr("帐号:"),widget);//创建帐号标签
16. QLabel *labelpassword = new QLabel(QObject::tr("密码:"),widget);//创建密码标签
17. QLineEdit *lineaccount = new QLineEdit(widget) ;//创建帐号文本输入框
18. QLineEdit *linepassword = new QLineEdit(widget) ;//创建密码文本输入框
19. QPushButton *buttonenter = new QPushButton(QObject::tr("确认"),widget);//创建确认按钮
20. QPushButton *buttonquit = new QPushButton(QObject::tr("退出"),widget);//创建退出按钮
21.
22. QHBoxLayout *layoutaccount = new QHBoxLayout ;//创建水平布局管理器
23. layoutaccount->addWidget(labelaccount);
24. layoutaccount->addWidget(lineaccount);//从左至右放置部件
25.
26. QHBoxLayout *layoutpassword = new QHBoxLayout ;
27. layoutpassword->addWidget(labelpassword);
28. layoutpassword->addWidget(linepassword);
29.
30. QVBoxLayout *layoutleft = new QVBoxLayout ;//创建一个垂直布局管理器
31. layoutleft->addStretch();//添加分隔符
32. layoutleft->addLayout(layoutaccount);
33. layoutleft->addLayout(layoutpassword);
34. layoutleft->addStretch();
35.
36. QVBoxLayout *layoutright = new QVBoxLayout ;
37. layoutleft->addStretch();
38. layoutright->addWidget(buttonenter);
39. layoutright->addWidget(buttonquit);
40. layoutright->addStretch();
41.
42. QHBoxLayout *layoutmain = new QHBoxLayout ;
43. layoutmain->addLayout(layoutleft);
44. layoutmain->addLayout(layoutright);
45.
46.
47. widget->setLayout(layoutmain);
48. widget->show();
49. int rec = a.exec() ;
50. delete widget ;
51. return rec ;
52.}
第31、34、37、40行添加了分隔符(或称伸展器),用它来占据剩余的空白区域,这样可以使窗口增大或缩小时,部件仍处于中间位置,不会随窗口变高变低而变化。
布局管理器既可以包含子部件,也可以包含子布局(例如第32、33、43、44、行),通过布局的不同嵌套组合,就可能构建相当复杂的布局层次。
1.#include
2.#include
3.#include
4.
5.int main(int argc, char *argv[])
6.{
7. QApplication a(argc, argv);
8. QWidget *widget = new QWidget;
9. QPushButton *button = new QPushButton("Start NewGame",widget);
10. widget->resize(300,150);//设置窗口大小
11. widget->setStyleSheet("background-color:rgba(247,192,193,255);");//设置样式
12. button->setStyleSheet("QPushButton{background-color:rgba(242,141,102,255);\
13. color:rgba(50,25,25,255);\
14. border:2px groove rgb(242,141,0);border-radius:20px;padding:2px 2px;\
15. background-color: qconicalgradient(cx:0.5, cy:0.522909, angle:179.9, stop:0.494318 rgba(242,141,102,255), \
16. stop:0.5 rgba(247,192,193,255));}"
17. "QPushButton:pressed{background-color:rgba(200,200,200,255);}");
18. button->move((widget->width()-button->width())/2,(widget->height()-button->height())/2);//让按钮移动到窗口中间
19. widget->show();
20. int rec = a.exec() ;
21. delete widget ;
22. return rec ;
}
setStyleSheet()功能非常强大,样式繁多。
1.#include
2.#include
3.#include
4.
5.int main(int argc, char *argv[])
6.{
7. QApplication a(argc, argv);
8. QWidget *widget = new QWidget;
9. QPushButton *button = new QPushButton(QObject::trUtf8("新游戏"),widget);
10. widget->resize(300,150);//设置窗口大小
11. button->resize(100,50);
12. widget->setStyleSheet("background-color:rgba(247,192,193,255);");//设置样式
13. button->setStyleSheet("QPushButton{background-color:rgba(242,141,102,255);\
14. color:rgba(50,25,25,255);\
15. border:2px groove rgb(242,141,0);border-radius:20px;padding:2px 2px;\
16. background-color: qconicalgradient(cx:0.5, cy:0.522909, angle:179.9, stop:0.494318 rgba(242,141,102,255), \
17. stop:0.5 rgba(247,192,193,255));}"
18. "QPushButton:pressed{background-color:rgba(200,200,200,255);}");
19. QFont fontbutton(QObject::trUtf8("楷体"),20,75);//楷体,20号字体,加粗
20. button->setFont(fontbutton);
21. button->move((widget->width()-button->width())/2,(widget->height()-button->height())/2);//让按钮移动到窗口中间
22. widget->show();
23. int rec = a.exec() ;
24. delete widget ;
25. return rec ;
26.}
第一步:添加资源文件。
在你工程的当前目录里建一个文件夹,然后把图片放进这个文件夹里。
回到Ct Creator,右键自己的工程,添加新文件,出现以下窗口
选好Qt Resource File后点击Choose,出现以下窗口
名称自取,路径选择刚才你放置图片的文件夹,点击下一步,然后出现的窗口就选择默认方式,直到出现以下画面
点击添加前缀(自取),前缀添加后再次点击添加,出现添加文件,点击添加文件,选择你的图片文件,这样资源文件就添加好了。
然后就可以在代码中使用图片了。
1.#include
2.#include
3.#include
4.
5.int main(int argc, char *argv[])
6.{
7. QApplication a(argc, argv);
8. QWidget *widget = new QWidget;
9. widget->resize(500,300);
10.
11. QPixmap pixmap(":/mainwindow/img2.png");
12. QPalette palette = widget->palette();
13. palette.setBrush(QPalette::Background,QBrush(pixmap.scaled(widget->size())));
14. widget->setPalette(palette);//给窗口添加图片背景
15.
16.
17. widget->show();
18. int rec = a.exec() ;
19. delete widget ;
20. return rec ;
21.}
setWindowFlags(Qt::FramelessWindowHint);//设置无边窗口
setWindowFlags(Qt::WindowStaysOnTopHint);//设置窗口最上
setWindowState(Qt::WindowFullScreen);//设置窗口全屏
setModal(true);//设置模态
setFixedSize(const QSize&);//设置窗口固定大小
setFocusPolicy(Qt::NoFocus);//无焦点
setAttribute(Qt::WA_TranslucentBackground);//设置透明