练习1
效果图:
目录
UI界面的控件命名
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
//槽函数定义
private slots:
void on_Mid_clicked();
void on_add_clicked();
void on_length_clicked();
void on_indexOf_clicked();
void on_ToUpper_clicked();
void on_addSubstr_clicked();
void on_whichBig_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//connect(ui->Mid, SIGNAL(clicked()), ui->label_3, SLOT(on_Mid_clicked()));
//connect(ui->add, SIGNAL(clicked()), ui->LabelAddresult, SLOT(on_add_clicked()));
//connect(ui->length, SIGNAL(clicked()), ui->label_4, SLOT(on_length_clicked()));
}
Widget::~Widget()
{
delete ui;
}
//槽函数,这里函数的命名用了官方的on_控件名_clicked的方式,所以上面的connect连接函数可省略,但如果自己命名则要写
void Widget::on_Mid_clicked()
{
QString s1 = ui->LineOrg->text();
QString s3 = s1.mid(2,3);
ui->label_3->setText(s3);
}
void Widget::on_add_clicked()
{
QString s1 = ui->Linefirst->text();
QString s2 = ui->LineSecond->text();
double a1 = s1.toDouble();
double a2 = s2.toDouble();
a1 = a1 + a2;
s1 = QString::number(a1);
ui->LabelAddresult->setText(s1);
}
void Widget::on_length_clicked()
{
QString s1 = ui->LineOrg->text();
int s3 = s1.length();
QString s4 = QString::number(s3);
ui->label_4->setText(s4);
}
void Widget::on_indexOf_clicked()
{
QString s1 = ui->LineSubstr->text();
int s3 = s1.length();
QString s4 = QString::number(s3);
ui->label_5->setText(s4);
}
void Widget::on_ToUpper_clicked()
{
QString s1 = ui->LineOrg->text();
QString s3 = s1.toUpper();
ui->label_6->setText(s3);
}
void Widget::on_addSubstr_clicked()
{
QString s1 = ui->LineOrg->text();
QString s2 = ui->LineSubstr->text();
QString s3 = s1+s2;
ui->label_7->setText(s3);
}
void Widget::on_whichBig_clicked()
{
QString s1 = ui->LineOrg->text();
QString s2 = ui->LineSubstr->text();
int s3 = s1.length();
int s4 = s2.length();
if(s3>s4)
{
ui->label_8->setText("True");
}
else
{
ui->label_8->setText("Flase");
}
}
main.cpp(用自动生成的就好不用动)
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
练习2
效果:
目录:
UI界面的控件命名
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
//槽函数的定义
private slots:
void on_add_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
//槽函数的实现
void Widget::on_add_clicked()
{
QString s1 = ui->lineEdit->text();
QString s2 = ui->lineEdit_2->text();
QString s3;
if(ui->radioButton->isChecked())
{
s3 = ui->radioButton->text();
}
else if(ui->radioButton_2->isChecked())
{
s3 = ui->radioButton_2->text();
}
QString s4 = ui->textEdit->toPlainText();
QString s5 = ui->textEdit_2->toPlainText();
QString s6 = "Name:"+s1+"\n"+"Age:"+s2+"\n"+"Gender:"+s3+"\n"+"Degree:\n"+s4+"\n"+"Department:\n"+s5;
ui->textEdit_3->setText(s6);
}
mian.cpp(用自动生成的就好不用动)
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
练习3
效果:
点击左菜单的父节点,右边的内容会发生变化;
点击左菜单的子节点,右边的内容会发生变化,且会弹出提示框;
UI界面的控件命名
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QStackedWidget>
#include <QMessageBox>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
//槽函数定义
public slots:
void item_clicked(QTreeWidgetItem* item,int colum);
void on_treeWidget_clicked(const QModelIndex &index);
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(item_clicked(QTreeWidgetItem*,int)));
}
Widget::~Widget()
{
delete ui;
}
//这里用的是自己命名的,所以上面要用connect来连接
void Widget::item_clicked(QTreeWidgetItem* item,int colum)
{
QString str=item->text(colum);
if(str=="gg")
{
ui->stackedWidget->setCurrentIndex(0);
QMessageBox::warning(this,"点击","你点击了\'"+str+"\'",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}
else if(str=="book")
{
ui->stackedWidget->setCurrentIndex(1);
QMessageBox::warning(this,"点击","你点击了\'"+str+"\'",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}
}
//这里用官方命名,所以上面不用写connect来连接
void Widget::on_treeWidget_clicked(const QModelIndex &index)
{
QString str = index.data(Qt::DisplayRole).toString();
if(str=="本地磁盘C:")
{
ui->stackedWidget->setCurrentIndex(0);
}
else if(str=="本地磁盘D:")
{
ui->stackedWidget->setCurrentIndex(1);
}
}
mian.cpp(用自动生成的就好不用动)
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
喜欢的朋友可以关注我的个人公众号,后台回复java资料可免费领取资源。