This commit is contained in:
flykhan 2023-08-13 11:47:17 +08:00
parent 4f2d4f5d87
commit 3aad444cdf
9 changed files with 83 additions and 26 deletions

View File

@ -1,8 +1,23 @@
#include "widget.h" #include "widget.h"
#include <QFileDialog>
#include <QString>
#include <QDebug>
Widget::Widget(QWidget *parent) Widget::Widget(QWidget *parent)
: QWidget(parent) : QWidget(parent)
{ {
this->resize(600,400);
button = new QPushButton("选择文件",this);
button->resize(100,100);
button->move(250,100);
connect(button,&QPushButton::clicked,[](){
// QString str = QFileDialog::getOpenFileName();
// qDebug()<<str;
QStringList str = QFileDialog::getOpenFileNames();
qDebug()<<str;
});
} }
Widget::~Widget() Widget::~Widget()

View File

@ -2,11 +2,15 @@
#define WIDGET_H #define WIDGET_H
#include <QWidget> #include <QWidget>
#include <QPushButton>
class Widget : public QWidget class Widget : public QWidget
{ {
Q_OBJECT Q_OBJECT
private:
QPushButton *button;
public: public:
Widget(QWidget *parent = nullptr); Widget(QWidget *parent = nullptr);
~Widget(); ~Widget();

View File

@ -1,11 +1,38 @@
#include "mainwindow.h" #include "mainwindow.h"
#include <QApplication> #include <QApplication>
#include <QLabel>
#include <QMouseEvent>
class EventLabel : public QLabel
{
protected:
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
};
void EventLabel::mouseMoveEvent(QMouseEvent *event){
this->setText(QString("<center><h1>Move: (%1, %2)</h1></center>").arg(QString::number(event->x()),QString::number(event->y)));
}
void EventLabel::mousePressEvent(QMouseEvent *event){
this->setText(QString("<center><h1>Press: (%1, %2)</h1></center>").arg(QString::number(event->x()),QString::number(event->y)));
}
void EventLabel::mouseReleaseEvent(QMouseEvent *event){
QString msg;
msg.sprintf("<center><h1>Release: (%d, %d)</h1></center>", event->x(), event->y());
}
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication a(argc, argv); QApplication a(argc, argv);
MainWindow w;
w.show(); EventLabel *label = new EventLabel;
label->setWindowTitle("MouseEvent Demo");
label->resize(300,200);
label->show();
return a.exec(); return a.exec();
} }

View File

@ -12,25 +12,26 @@
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication a(argc, argv); QApplication a(argc, argv);
// Widget7 w; // Widget7 w;
// w.show(); // w.show();
Widget7 judge1;
Widget7 judge2;
Widget7 judge3;
Widget8 w8; Widget7 judge1;
Widget7 judge2;
Widget7 judge3;
judge1.show(); Widget8 w8;
judge2.show();
judge3.show();
// 建立信号槽连接 judge1.show();
w8.connect(&judge1,&Widget7::studentSelected,&w8,&Widget8::receviceStudentSelection); judge2.show();
w8.connect(&judge2,&Widget7::studentSelected,&w8,&Widget8::receviceStudentSelection); judge3.show();
w8.connect(&judge2,&Widget7::studentSelected,&w8,&Widget8::receviceStudentSelection);
// 建立信号槽连接
w8.connect(&judge1,&Widget7::studentSelected,&w8,&Widget8::receviceStudentSelection);
w8.connect(&judge2,&Widget7::studentSelected,&w8,&Widget8::receviceStudentSelection);
w8.connect(&judge2,&Widget7::studentSelected,&w8,&Widget8::receviceStudentSelection);
// w8.show(); // w8.show();
return a.exec(); return a.exec();
} }

View File

@ -21,6 +21,4 @@ Widget5::Widget5(QWidget *parent) : QWidget(parent)
this->setWindowTitle("Winget6消失了"); this->setWindowTitle("Winget6消失了");
w6->close(); w6->close();
}); });
} }

View File

@ -11,6 +11,7 @@ class Widget5 : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit Widget5(QWidget *parent = nullptr); explicit Widget5(QWidget *parent = nullptr);
~Widget5(){ delete w6;}
private: private:
Widget6 *w6; // Widget6 类对象的指针成员 Widget6 *w6; // Widget6 类对象的指针成员

View File

@ -24,37 +24,42 @@ Widget7::Widget7(QWidget *parent) : QWidget(parent)
btn_restart = new QPushButton("重新再来",this); btn_restart = new QPushButton("重新再来",this);
btn_restart->move(150,70); btn_restart->move(150,70);
connect(this,&Widget7::my_signal,this,&Widget7::my_handler); // connect(this,&Widget7::my_signal,this,&Widget7::my_handler);
connect(this,SIGNAL(my_signal(const QString &)),this,SLOT(my_handler(const QString &)));
connect(btn1,&QPushButton::clicked,[&]{ connect(btn1,&QPushButton::clicked,[&]{
QString str = btn1->text(); QString str = btn1->text();
emit this->my_signal(str); emit this->my_signal(str);
emit this->studentSelected(str); emit this->studentSelected(str);
btn1->setEnabled(false);
}); });
connect(btn2,&QPushButton::clicked,[&]{ connect(btn2,&QPushButton::clicked,[&]{
QString str = btn2->text(); QString str = btn2->text();
emit this->my_signal(str); emit this->my_signal(str);
emit this->studentSelected(str); emit this->studentSelected(str);
btn2->setEnabled(false);
}); });
connect(btn3,&QPushButton::clicked,[&]{ connect(btn3,&QPushButton::clicked,[&]{
QString str = btn3->text(); QString str = btn3->text();
emit this->my_signal(str); emit this->my_signal(str);
emit this->studentSelected(str); emit this->studentSelected(str);
btn3->setEnabled(false);
}); });
connect(btn4,&QPushButton::clicked,[&]{ connect(btn4,&QPushButton::clicked,[&]{
QString str = btn4->text(); QString str = btn4->text();
emit this->my_signal(str); emit this->my_signal(str);
emit this->studentSelected(str); emit this->studentSelected(str);
btn4->setEnabled(false);
}); });
connect(btn5,&QPushButton::clicked,[&]{ connect(btn5,&QPushButton::clicked,[&]{
QString str = btn5->text(); QString str = btn5->text();
emit this->my_signal(str); emit this->my_signal(str);
emit this->studentSelected(str); emit this->studentSelected(str);
btn5->setEnabled(false);
}); });
// 打印学生 // 打印学生
@ -64,16 +69,24 @@ Widget7::Widget7(QWidget *parent) : QWidget(parent)
qDebug()<<*it; qDebug()<<*it;
it++; it++;
} }
// for(int i=0;i<vct->size();i++){
// qDebug()<<vct->at(i);
// }
}); });
connect(btn_restart,&QPushButton::clicked,[&]()->void{ connect(btn_restart,&QPushButton::clicked,[&]()->void{
vct->clear(); // 清空容器 vct->clear(); // 清空容器
btn1->setEnabled(true); // 还原按钮可用性
btn2->setEnabled(true);
btn3->setEnabled(true);
btn4->setEnabled(true);
btn5->setEnabled(true);
}); });
} }
void Widget7::my_handler(const QString &str) void Widget7::my_handler(const QString &str)
{ {
// qDebug()<<str; // qDebug()<<str;
vct->append(str); // 向 QVector 中添加学生 if(vct->count(str) == 0) // 当本字符串尚未加入 vct 时,将其加入 vct
vct->append(str); // 向 QVector 中添加学生
} }

View File

@ -10,10 +10,8 @@ class Widget7 : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit Widget7(QWidget *parent = nullptr); explicit Widget7(QWidget *parent = nullptr);
~Widget7() ~Widget7() { delete vct; }
{
delete vct;
}
private: private:
QVector<QString> *vct; QVector<QString> *vct;
QPushButton *btn1,*btn2,*btn3,*btn4,*btn5; QPushButton *btn1,*btn2,*btn3,*btn4,*btn5;

Binary file not shown.