目录
当前->父窗体->show() this->parentWidget()->show();
一、新建窗体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、其他窗体的创建生成,文件窗,颜色窗,文字窗,弹窗等。需要定义头文件才能使用。