QT第三天(多窗体)

目录

一、新建窗体UI文件

 二、选择主窗体

三、修改窗体名称

四、在使用需要创建窗体的文件中添加 xxx.h文件

五、新建与显示

 六、子窗体返回父窗体

当前->父窗体->show() this->parentWidget()->show();

七、QT窗体通信

1、在发送的窗体中声明信号

2、在接收数据窗体声明槽

 3、关联信号与槽

4、发送带参信号

八、自带窗体

1、打开一个文件

2、QColorDialog 颜色窗体

3、字体窗体

4、QInputDialog 输入窗体

5、弹窗窗体​编辑

总结


一、新建窗体UI文件

 二、选择主窗体

三、修改窗体名称

四、在使用需要创建窗体的文件中添加 xxx.h文件

五、新建与显示

 六、子窗体返回父窗体

当前->父窗体->show() 
this->parentWidget()->show();

七、QT窗体通信

1、在发送的窗体中声明信号

class key_win : public QMainWindow
{
    Q_OBJECT

public:
    explicit key_win(QWidget *parent = nullptr);
    ~key_win();
    
//自定义一个信号
signals:
    void send_key(QString);
    
private:
    Ui::key_win *ui;
};

2、在接收数据窗体声明槽

class MainWindow : public QMainWindow
{
    Q_OBJECT

private slots:
    //接收按键槽函数
    void get_key(QString);

private:
    Ui::MainWindow *ui;
};

 3、关联信号与槽

    //分配键盘的空间
    kw = new key_win(this);
    //关联信号与槽
    connect(kw,SIGNAL(send_key(QString)),this,SLOT(get_key(QString )));

4、发送带参信号

emit send_key("Q");

八、自带窗体

1、打开一个文件

打开一个文件
QString 

//官方的使用例子:
 QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                 "/home",
                                                 tr("Images (*.png *.xpm *.jpg)"));
    
打开多个文件  
QStringList

//官方的使用例子:    
     QStringList files = QFileDialog::getOpenFileNames(
                         this,
                         "Select one or more files to open",
                         "/home",
                         "Images (*.png *.xpm *.jpg)");

2、QColorDialog 颜色窗体

最简单的用法 
QColor  c = QColorDialog::getColor();

QColor 类的使用: 
获取A R G  B值 
void getRgb(int *r, int *g, int *b, int *a = nullptr) const
得到A R G B 的名称 
QString name() const 
    
控件的样式设置  
this->setStyleSheet("样式");
例子:修改当前背景的颜色   
this->setStyleSheet("background-color: rgb(255, 0, 0);");
使用例子:
void MainWindow::on_pushButton_clicked()
{
    打开颜色窗体
    QColor  c = QColorDialog::getColor();
    qDebug() << c.name();

    QString bc = QString("background-color: %1;").arg(c.name());

    this->setStyleSheet(bc);
}

3、字体窗体

//接口 
QFont getFont(bool *ok, QWidget *parent = nullptr)

//使用例子 
bool ok;
QFont f = QFontDialog::getFont(&ok);

//设置控件的字体
控件->setFont(const QFont &);

//例子:设置当前界面的字体
this->setFont(f);

4、QInputDialog 输入窗体

 

1、获取浮点数 
例子: 
bool ok;
double d = QInputDialog::getDouble(this, tr("QInputDialog::getDouble()"),
                                   tr("Amount:"), 37.56, -10000, 10000, 2, &ok);
if (ok)
    doubleLabel->setText(QString("$%1").arg(d));
-------------------------------------------------------------------------------------
2、获取整形
    例子:
 bool ok;
int i = QInputDialog::getInt(this, tr("QInputDialog::getInteger()"),
                             tr("Percentage:"), 25, 0, 100, 1, &ok);
if (ok)
    integerLabel->setText(tr("%1%").arg(i));
-------------------------------------------------------------------------------------
3、获取列表项 
例子
 QStringList items;
     items << tr("Spring") << tr("Summer") << tr("Fall") << tr("Winter");
     bool ok;
     QString item = QInputDialog::getItem(this, tr("QInputDialog::getItem()"),
                                          tr("Season:"), items, 0, false, &ok);
     if (ok && !item.isEmpty())
         itemLabel->setText(item);    
------------------------------------------------------------------------------------ 
4、获取字符串 
    例子
bool ok;
QString text = QInputDialog::getText(this, tr("QInputDialog::getText()"),
                                     tr("User name:"), QLineEdit::Normal,
                                     "msg", &ok);
if (ok && !text.isEmpty())
    textLabel->setText(text);   

5、弹窗窗体

警告信息 
QMessageBox::StandardButton 
warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

官方例子
    int ret = QMessageBox::warning(this, tr("My Application"),
                                   tr("The document has been modified.\n"
                                      "Do you want to save your changes?"),
                                   QMessageBox::Save | QMessageBox::Discard
                                   | QMessageBox::Cancel,
                                   QMessageBox::Save);

 选项表格:

总结

1、主要是子窗体的创建与主窗体的联系,如果需要发送信号,则需要分清楚发送窗体和接收窗体。在发送窗体头文件定义信号,在接收窗体头文件定义槽函数。

2、如果定义了信号发送则需要关联函数connect。

3、其他窗体的创建生成,文件窗,颜色窗,文字窗,弹窗等。需要定义头文件才能使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值