Qtを使い始めるためのミニマリストチュートリアル(2)

「QMainWindow_Menuバーとツールバー」

QMainWindow:メニューバー、複数のツールバー、複数のリベット留めコンポーネント(フローティングウィンドウドックウィジェット)、中央ウィジェット、ステータスバー。

メニューバー

メニューバーは1つしかありません

    // 创建菜单栏MenuBar,使用系统提供的方法
    QMenuBar *bar = menuBar();
    // 将菜单栏放入窗口中
    setMenuBar(bar);
    // 创建菜单Menu
    QMenu *fileMenu = bar->addMenu("文件");
    QMenu *editMenu = bar->addMenu("编辑");
    // 创建菜单项Action
    fileMenu->addAction("新建");
    fileMenu->addSeparator();
    fileMenu->addAction("打开");

 ToolBar ToolBar

複数のツールバーが存在する可能性があります

    // 创建工具栏,系统没有提供对应的方法
    QToolBar *toolBar = new QToolBar(this);
    // 将工具栏放入窗口中
    // addToolBar(Qt::LeftToolBarArea, toolBar);
    addToolBar(toolBar);
    // 设置浮动属性
    // toolBar->setFloatable(false);
    // 设置移动属性
    // toolBar->setMovable(true);
    // 工具栏中可以设置内容
    toolBar->addAction("新建");
    toolBar->addSeparator();
    toolBar->addAction("打开");
    // 工具栏中添加一些控件
    QPushButton *btn = new QPushButton("aaa", this);
    toolBar->addWidget(btn); // QPushButton父类的父类是QWidget

「QMainWindow_Statusバー、リベット留め部品、コア部品」

ステータスバー

    // z状态栏只有一个
    QStatusBar *stBar = statusBar();
    // 将statusBar设置到窗口中
    setStatusBar(stBar);
    // 放置标签控件
    QLabel *label = new QLabel("提示的信息", this);
    stBar->addWidget(label);

リベットで留められたウィジェット(フローティングウィンドウ)QDockWidget

    // 铆接部件 (浮动窗口)
    QDockWidget *docWidget = new QDockWidget("浮动", this);
    addDockWidget(Qt::BottomDockWidgetArea, docWidget); // (add可以add多个)
    //设置铆接部件后期的可停靠范围
    docWidget->setAllowedAreas(Qt::TopDockWidgetArea| Qt::BottomDockWidgetArea);

コアコンポーネント

    //----------------------------------------
    // 设置中心部件(eg:记事本)
    QTextEdit *edit = new QTextEdit(this);
    setCentralWidget(edit); //中心部件只能有一个,所以需要用内置的set函数(set只能set一个)

「リソースファイルの追加」

    ui->setupUi(this);
    ui->actionNew->setIcon(QIcon("/home/clf/Downloads/lufei2.jpeg"));
    // 使用添加Qt的资源 ": + 前缀名 + 文件名"
    // 1. 把所有的图片及资源放入源码目录下
    // 2. 右击项目->添加新文件->Qt->Resoure File->资源文件取名res->确定即可生成res.qrc文件
    ui->actionNew->setIcon(QIcon(":/lufei/Image/lufei1.jpeg"));

「モーダルおよび非モーダルダイアログボックスの作成」

モーダルダイアログの実行

       // 对话框 分类
       // 模态对话框(不可以对其他的窗口进行操作,有阻塞功能)、非模态对话框
       // 模态创建
        QDialog dlg(this);
        dlg.resize(200, 100); //模态对话框太小的话,会提示一些警告,所以geometry设置大一些
        dlg.exec(); //模态对话框(阻塞功能)
        qDebug()<<"模态对话框弹出了";

 非モーダルダイアログショー

// 非模态对话框
// QDialog dlg2(this);// 非模态对话框(因为dlg2是创建在堆上的,所以会一闪而过)
 QDialog * dlg2 = new QDialog(this);
 dlg2->resize(200, 100);
 dlg2->show();
 dlg2->setAttribute(Qt::WA_DeleteOnClose); // 防止关闭非模态对话框的时候,内存没法释放的
 qDebug()<<"非模态对话框弹出了";

「標準ダイアログボックスのメッセージダイアログボックス」

PS:システムには、直接使用できる多くのダイアログボックスが用意されています。

QMessageBoxの静的パブリックメンバー:

  1. クリティカル・エラー
  2. 情報
  3. 質問
  4. 警告
        //标准对话框:错误对话框、消息对话框
//        QMessageBox::critical(this, "critical","错误");
//        QMessageBox::information(this,"info","信息");
        // 提问对话框
        QMessageBox::question(this, "ques", "提问");
        // 参1:父亲 参2:标题 参3:提示内容 参4:按键类型 参5:默认关联回车按键
        if(QMessageBox::Save = QMessageBox::question(this, "ques", "提问",
           QMessageBox::Save|QMessageBox::Cancel, QMessageBox::Cancel)) {
            qDebug()<<"选择保存";
        }
        else {
            qDebug()<<"选择取消";
        }

「標準ダイアログのファイルダイアログを選択」

// 文件对话框
// 参1:父亲 参2:标题 参3:默认打开路径 参4:过滤文件格式
   QString strPath= QFileDialog::getOpenFileName(this, "打开","/home/clf/", "(*).txt");
   qDebug()<<strPath;

「ログインウィンドウのレイアウト」

1.ログインウィンドウを実装します


2.レイアウト方法を使用してウィンドウを美しくします。3
。レイアウト、水平レイアウト、垂直レイアウト、およびグリッドレイアウトにウィジェットを使用します。
4.全体のレイアウトにユーザー名、パスワード、ログイン、およびログアウトボタンを指定します
。5 デフォルトウィンドウとコントロールの間に9ピクセルがあり、layoutLeftMarginを調整できます。6。
レイアウトにスプリングを使用します
。7。ウィンドウウィジェットの高さが高すぎ、sizepolicy属性をFixedとして調整でき、ウィジェット内のコントロールのサイズに適応できます

「コントロールボタングループ」

  1. QPushButtonの頻繁に使用されるボタン
  2. QToolButtonツールボタン。画像を表示するために使用されます。テキストを表示する場合は、スタイルを変更します:toolButtonStyle。突き出たスタイルのautoRaise
  3. radioButtonラジオボタン、デフォルトのui-> setCheck(true);を設定します。
  4. ステータスを監視するためのcheckBox複数選択ボタン。2選択済み1半分選択済み0未選択。

「QListWidgetコントロール」


QListWidgetリストコンテナ

  1. QListWidgetItem1行のコンテンツ

「QTableWidgetコントロール」

  1. StackedWidget
  2. TabWidget
  3. ドロップダウンボックスcombox
  4. 単一行編集ボックス行編集
  5. テキストエディット(編集可能なフォントの色、フォーマット)
  6. PlainTextEdit(編集不可能なフォントの色、形式
  7. スライダー
  8. ラベル

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    // 栈控件的使用
    // 设置默认定位
    ui->stackedWidget->setCurrentIndex(1);
    // 按钮关联栈控件
    connect(ui->btn_ScrollArea, &QPushButton::clicked, [=](){
       ui->stackedWidget->setCurrentIndex(0);
    });
    connect(ui->btn_TabWidget, &QPushButton::clicked, [=](){
       ui->stackedWidget->setCurrentIndex(1);
    });

    // 下拉框comBox
    ui->comboBox->addItem("奔驰");
    ui->comboBox->addItem("宝马");
    ui->comboBox->addItem("拖拉机");
    // 点击按钮,选中拖拉机选项
    connect(ui->btn_select, &QPushButton::clicked, [=](){
        // ui->comboBox->setCurrentIndex(2);
        ui->comboBox->setCurrentText("拖拉机");
    });

    // 利用QLabel显示图片 在Qt中的图片资源都叫Pixmap
    ui->lbl_Image->setPixmap(QPixmap(":/Image/lufei1.jpeg"));
    // 利用QLabel显示动图 仅限于gif的图片
    QMovie * movie = new QMovie(":/Image/maliao.gif");
    // 动图需要启动播放的动作
    ui->lbl_Movie->setMovie(movie);
    movie->start();
}

 

おすすめ

転載: blog.csdn.net/weixin_44937328/article/details/114282064