fanfan-ainiyo
  1 //写东西写到构造函数
  2 //Pro
  3 //模块
  4 QT +=widgets
  5 
  6 //main.cpp
  7 #include<QWidget>
  8 #include<QApplication>
  9 #include<QPushButton>//按钮
 10 int main(int argc,char **argv)
 11 {
 12     QApplication app(argc,argv);
 13     QWidget w;
 14     w.setwindowTitle("这是标题");
 15     
 16     QPushButton b;
 17     b.setText("给按钮设置内容");
 18     b.setParent(&w);//指定父对象
 19     b.move(100,100);//移动坐标
 20     //b.show();
 21     QPushButton b1(&w);//构造函数传参
 22     b1.text("内容");
 23     w.show();
 24     /*
 25     如果不指定父对象,对象和对象之间是互相独立的,没有关系
 26     a指定b为它的父对象,相当于a放在b的上面
 27     指定父对象的两种方式:
 28         1)setParent
 29         2)构造函数传参
 30     指定父对象,只需要父对象显示,上面子对象自动显示
 31     */
 32     app.exec();
 33     return 0;
 34     
 35     }
 36 
 37     
 38 //标准信号和槽
 39 connect(&b1,&QPushButton::pressed,this,&MainWidget::close);
 40 /*&b1: 信号发出者,指针类型
 41 **&QPushButton::pressed : 处理信号    发送者的类名::信号名字
 42 **this:信号接收者
 43 **&MainWidget::close :槽函数,信号处理函数    &接收的类名::槽函数名字
 44 */
 45 
 46 /*自定义槽,普通函数的用法
 47 *Qt5:任意的成员函数,普通全局函数,静态函数
 48 *槽函数需要和信号一致(参数,返回值)
 49 *由于信号都没有返回值,所以,槽函数一定没有返回值
 50 */
 51 connect(&b2,&QPushButton::released,this,&MainWidget::mySlot)//mySlot是自定义的
 52 void MainWidget::mySlot()//函数实现 
 53 {
 54     b2->setText("123");
 55 }
 56 /*
 57 信号:短信
 58 槽函数:接收短信的手机
 59 */
 60 
 61 //固定大小宽度函数:resize(400,400); 
 62 
 63 //自定义信号   例如子窗口传递信号给父窗口 父窗口决定怎么处理
 64 signals:
 65     /*
 66     信号必须有signals关键字来声明
 67     信号没有返回值,但可以有参数
 68     信号就是函数的声明,只需声明,无需定义
 69     使用:emit mySignal(); //在本身产生信号做槽函数,槽函数发射信号 emit mySignal
 70     信号可以重载
 71     */
 72     void mySignal();
 73     void mySignal(int,QString);
 74     
 75 //信号与槽:Qt对象之间通信的接口
 76 //3include<QDebug> Qt的打印 用法 qDebug()<<变量 
 77 //字符串变量转码 str.toUtf8().data(); 
 78 
 79 
 80 //Lambda表达式,匿名函数对象
 81 //C++增加的新特性,项目文件:CONFIG += C++11
 82 //Qt配合信号一起使用,非常方便
 83 QPushButton *b4 = new QPushButton(this);
 84 b4->setText("Lambda表达式");
 85 b4->move(150,150);
 86 connect(b4,&QPushButton::released,[=]()mutable  //[]里用于传参
 87 {                                                //=:把外部所有局部变量类中所有成员以值方式传递
 88     qDebug() << "1111"                            //mutable可变的 变量可被修改
 89 }                                                //this:类中所有成员以值方式传递
 90 );                                                //&:把外部所有局部变量,引用符号
 91 resize(400,400);//固定大小  
 92 
 93 
 94 //坐标系统
 95 /*对于父窗口(主窗口),坐标系统相对于屏幕
 96 原点:相对于屏幕左上角
 97 x:往右递增
 98 y:往下递增
 99 */
100 /*对于子窗口(主窗口),坐标系统相对于父窗口
101 原点:相对于窗口空白区域左上角(不包括边框)
102 x:往右递增
103 y:往下递增
104 */
105 
106 //动态分配内存机制
107 /*指定父对象后    直接或间接继承于QObject
108 子对象如果是动态分配空间的new,不需要手动释放delete
109 系统会自动释放
110 */
111 
112 
113 //菜单栏,工具栏,状态栏,核心控件,浮动窗口
114 //基类为QMainWindow
115 
116 //所需头文件 菜单栏--
117 #include<QMenuBar> 
118 #include<QMenu>
119 #include<QAction>
120 //菜单栏
121 QMenuBar *mBar = menuBar();
122 //添加菜单
123 QMenu *pFile = mBar->addMenu("文件");
124 //添加下拉菜单
125 QAction *pNew->pFile->addAction("新建");
126 //按下产生信号 处理信号
127 connect(pN,&QAction::triggered,[=](){
128     qDebug()<<"新建被按下"
129 });
130 //添加分割线
131 p->File->addSeparator();
132 
133 //工具栏头文件
134 #include<QTiilBar>
135 //工具栏
136 QTiilBar *tooBar = addToolBar("tooBar");
137 //工具栏添加快捷键
138 toolBar->addAction(pNew);
139 //工具栏添加小控件(用按键)
140 
141 //状态栏头文件
142 #include<QStatusBar>
143 #include<QLabel>
144 //状态栏
145 QStatusBar *sBar = statusBar();
146 QLabel *label = new QLabel(this);
147 label->setText("Normal text file");
148 sBar->addWidget(label);
149 //addWidget从左往右添加
150 sBar->addWidget(new QLabel("2",this));
151 //addPermanentWidget 从右往左添加
152 sBar->addPermanentWidget(new QLabel("3",this));
153 
154 //核心控件头文件 eg:文本编辑框
155 #include<QTextEdit>
156 //核心控件
157 QTextEdit *textEdit = new QTextEdit(this);
158 setCentralWidget(textEdit);
159 
160 //浮动窗口头文件
161 #include<QDockWidget>
162 //浮动窗口
163 QDockWidget *dock = new QDockWidget(this);
164 addDockWidget(放的位置,dock);
165 //添加控件 eg:添加一个文本编辑框
166 QTextEdit *texxtEdit1 = new QTextEdit(texxtEdit1);
167 dock0->setWidget(texxtEdit1);
168 
169 //模态和非模态对话框(模态出来后不能操作后面的对话框)
170 //模态对话框
171 #include<QDialog>
172 dlg.exec(); 
173 //非模态对话框
174 dlg.show();
175 //1.当成成员
176 //2.动态分配内存
177 QDialog *p = new QDialog(this);
178 p->setAttribute(Qt::WA DeleteOnclose);//关闭时释放内存
179 p->show();
180 
181 //标准对话框和文件对话框
182 //关于对话框头文件 
183 #include<QMessageBox>
184 //关于对话框
185 QMessageBox::about(this,"about","关于Qt");
186 //问题对话框
187 //返回一个枚举 Lambda表达式里
188 int ret=QMessageBox::question(this,"question","Are you ok?");//有按钮yes/no
189 switch(ret){
190     case QMessageBox::Yes: qDebug()<<"i am ok";break;
191     case QMessageBox::No: qDebug()<<"i am bad";break;
192     default:break;
193 }
194 //指定按钮
195 int ret=QMessageBox::question(this,"question","Are you ok?",QMessageBox::OK QMessageBox::Cancel);
196 switch用法一样
197 
198 //文件对话框头文件
199 #include<QFileDialog>
200 QString path=QFileDialog::getOpenFileName(        ///path:返回的一个路径
201                             this,
202                             "open",
203                             "../",
204                             "souce(*.cpp *.h);;Tet(*.txt);;All(*.*)"    //指定文件类型查找
205                             );
206 qDebug()<<path;    //打印路径

 

分类:

技术点:

相关文章: