第一个QT实验品 --- 替换对话框

平时上课还是很忙,就只有晚上抽点时间学学。

 

IDE用的是qt creator,很好用。

 

《C++ GUI Programming with Qt 4》看到第二章结束。自己写了一个替换对话框。先贴自己的读书笔记,代码最后贴。

 


 

QLabel  可以显示html代码

 

QObject::connect( button,SIGNAL(clicked()),&app,SLOT(quit()));

 

SIGNAL(func1())  SLOT(func2())   当func1被调用(产生信息),func2也被调用

 

emit 触发信号  宏

 

qt对话框是对QDialog类的继承    要使用signals 和 slots  要包含 Q_OBJECT

 

moc 类定义必须放在头文件而不能放在实现文件中

 

 

信号和槽:

 

 

一个信号连接多个槽  槽的调用顺序是随机的

 

信号可以和信号连接   但一个信号发出  另一个信号也将发出

 

信号和槽函数必须有着相同的参数类型   如果信号里的参数个数多于槽函数的参数

 

 

使用 designer

 

建立cell.ui文件   在代码中就包含 ui_cell.h头文件  类为  UI::Name

 

通常对该类进行继承来完成其他功能   在cell.h头文件中完成继承   在代码中就可以直接使用cell.h头文件了

 

setupUi函数可以画出设计好的界面

 

一个控件如果有父控件,那么在父控件被删除以后  子控件也会被自动删除

 

使用qt Designer 可以不改变源程序的情况下改变对话框的设计

 

对ui的继承可以使用 单继承和多继承  单继承要在类内保存ui的指针   多继承申明以后的类可以直接使用

 

 

动态对话框:

 

子控件可以用QObject::findChild()得到

QComboBox *primaryColumnCombo = sortDialog->findChild("primaryColumnCombo");

 

QUiLoader 类在一个单独的链接库中,如果在一个应用程序中使用了QUiLoader,必须在这个程序的.pro 文件中添加下面这样的代码:CONFIG += uitools

 

使用动态对话框不用重新编译程序就能够改变对话框的布局

 


 

我对ui文件中类的继承是多继承方式。

 

 

先是ui文件

FindDialog 0 0 542 301 Dialog 20 230 61 16 需匹配字符 20 260 71 16 设定样式头部 20 10 501 201 110 230 321 20 110 260 131 20 260 260 31 20 尾部 300 260 131 20 false 450 230 75 23 Find 450 260 75 23 Close  

 

finddialog.h

#ifndef FINDDIALOG_H #define FINDDIALOG_H #include #include "ui_finddialog.h" class FindDialog : public QDialog,public Ui::FindDialog { Q_OBJECT public: FindDialog(QWidget *parent = 0); private slots: void slCanUse(); void slWork(); }; #endif // FINDDIALOG_H 

 

finddialog.cpp

#include "finddialog.h" #include FindDialog::FindDialog(QWidget *parent) : QDialog(parent) { setupUi(this); connect( pb_close,SIGNAL(clicked()),this,SLOT(close())); connect( led_match,SIGNAL(textChanged(QString)),this,SLOT(slCanUse())); connect( led_head,SIGNAL(textChanged(QString)),this,SLOT(slCanUse())); connect( led_tail,SIGNAL(textChanged(QString)),this,SLOT(slCanUse())); connect( pb_find,SIGNAL(clicked()),this,SLOT(slWork())); } void FindDialog::slCanUse() { QString sm = led_match->text(),sh = led_head->text(),st = led_tail->text(); pb_find->setEnabled( sm.size() && sh.size() && st.size() ); } void FindDialog::slWork() { QString originalStr,takeStr; takeStr = led_head->text() + led_match->text() + led_tail->text(); originalStr = ted_string->toPlainText(); originalStr.replace(led_match->text(),takeStr); ted_string->setHtml(originalStr); }  

 

main.cpp

#include #include "finddialog.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); FindDialog w; w.show(); return a.exec(); }  

你可能感兴趣的:(Qt)