第一个Qt程序
新建一个空的项目
.pro文件内容
示例代码:
10年积累的网站设计制作、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有广安免费网站建设让你可以放心的选择与我们合作。
1 /* 应用程序抽象类 */ 2 #include3 #include 4 #include 5 #include 6 7 int main(int argc, char *argv[]) 8 { 9 QApplication app(argc, argv);10 11 QWidget w;12 w.show();13 w.setWindowTitle("你好,世界!"); // Qt 5不存在乱码的问题了14 15 QPushButton btn("button");16 btn.setParent(&w); // 不设置父对象,那么按钮也就是一个独立的窗口17 btn.show();18 19 QObject::connect(&btn, QPushButton::clicked, [](){20 qDebug() << "button is clicked..." << endl;21 });22 23 return app.exec();24 }
QLineEdit常用功能
设置输入密码
设置提示文字
设置自动匹配
示例代码:
1 #include2 #include 3 #include 4 #include 5 #include 6 7 int main(int argc, char *argv[]) 8 { 9 QApplication app(argc, argv);10 11 QLineEdit lineEdit;12 /* 显示模式 enum EchoMode { Normal, NoEcho, Password, PasswordEchoOnEdit }; */13 //lineEdit.setEchoMode(QLineEdit::PasswordEchoOnEdit); // 失去焦点时候变为密文14 15 /* 淘汰传统的输入之后还要点击按钮 */16 QObject::connect(&lineEdit, QLineEdit::returnPressed, [](){17 qDebug() << "You have entered the return key...";18 });19 20 /* 自动补全 只有echomode设置为Normal时completer才有效 */21 QCompleter completer(QStringList() << "aa" << "abc" << "123");22 completer.setFilterMode(Qt::MatchContains); // 包含匹配 比如:输入b也会匹配abc23 lineEdit.setCompleter(&completer);24 25 /* lineEdit设置提示文字 */26 lineEdit.setPlaceholderText("Please input text:");27 28 lineEdit.show();29 30 return app.exec();31 }
坐标系统
设置坐标
1 #include2 #include 3 #include 4 5 int main(int argc, char* argv[]) 6 { 7 QApplication app(argc, argv); 8 9 /* 构造一个窗口*/10 QWidget w;11 12 /*显示窗口*/13 w.show();14 15 /* 按钮也是个窗口 */16 QPushButton button;17 button.setText("Button");18 /* 窗口对象的父子关系,影响显示位置 */19 /* 没有父窗口的窗口,我们称之为主窗口 */20 button.setParent(&w);21 button.show();22 23 button.setGeometry(30, 30, 100, 30);24 25 return app.exec();26 }
布局Layout
QHBoxLayout简单实现控件居中:
main.cpp
效果图:
QHBoxLayout实现居中并且设置控件比重:
main.cpp
效果图:
QGridLayout实现控件居中:
main.cpp
效果图:
QGridLayout实现简单的登录界面:
main.cpp
效果图:
常用控件的基本使用
QLabel
QLabel.cpp
Button组(QPushButton,QRadioButton, QCombobox,QCheckBox)
Button.cpp
效果图:
QTextEdit基本使用:
QTextEdit.cpp
效果图:
QGroupBox基本使用:
QGroupBox.cpp
效果图:
QSlider、QSpinBox基本使用:
QSpinBoxAndQSlider.cpp
效果图:
QLcdnumber基本使用:
QLCDNumber.cpp
效果图:
QEvent
MyEvent.h
MyEvent.cpp
EventFilter
MyApplication.h
MyApplication.cpp
MyWidget.h
MyWidget.cpp
QPainter
覆盖基类的painterEvent虚函数,函数原型为:
简单的图形绘制:
1 void MyWidget::paintEvent(QPaintEvent *) 2 { 3 // 简单的绘制 4 QPainter p(this); 5 //p.drawArc(100, 100, 20, 20, 10, 10); 6 p.drawLine(QPointF(100, 100), QPointF(200, 200)); 7 p.setPen(QPen(QColor("red"))); 8 p.setBrush(Qt::yellow); // 画刷是代表封闭图形的内部填充 9 p.drawRect(QRect(200, 200, 220, 220));10 p.setRenderHint(QPainter::Antialiasing); // 变得圆润一些11 p.drawEllipse(QPointF(150, 150), 40, 40);12 p.drawText(QPointF(250, 250), "Hello Qt");13 }
通过变换集来存储所有的变换:
1 { 2 // 通过变换集来存放所有的变换 3 QPainter p(this); 4 QTransform trans; 5 //trans.rotate(88.0, Qt::YAxis); 6 //trans.translate(100, 300); 7 trans.scale(3, 3); 8 p.setTransform(trans); 9 p.drawLine(100, 100, 200, 100); 10 }
先画一张图,然后将该图绘制到窗口上:
1 { 2 // 先画一张图,然后将图绘制到窗口 3 QPixmap pixmap(size()); // pixmap默认的是黑色背景 4 QPainter p(&pixmap); 5 6 // 想着设置pixmap背景为白色,并不能实现,需要通过以下方法 7 //p.setBackground(QBrush(Qt::white)); 8 p.setBrush(Qt::white); 9 p.drawRect(0, 0, size().width(), size().height());10 p.drawLine(QPointF(100, 100), QPointF(200, 200));11 p.setPen(QPen(QColor("red")));12 p.setBrush(Qt::yellow); // 画刷是代表封闭图形的内部填充13 p.drawRect(QRect(200, 200, 220, 220));14 15 p.end();16 p.begin(this); // 开始绘制窗口17 p.drawPixmap(0, 0, pixmap);18 }