Qt(基础1)

菜单

编辑菜单信息

转到槽函数

点击第一步按钮后右键点击图中所示的菜单属性

创建触发函数

添加槽函数内容

在mainwindow.cpp文件中对槽函数实现的功能进行细化

QWidget

Qt实现选项卡式界面

此部分参考链接

创建新的界面


  1. 实现各个界面对应功能(界面需继承自QWidget类)
  2. 新建一个Content类,继承自QFrame。在Content类中,创建一个QStackedWidget对象,然后将页面插入到此对象中。
    content.h
    #ifndef CONTENT_H
    #define CONTENT_H
    #include <QFrame>
    #include <QStackedWidget>
    #include "affine.h"  //界面1头文件
    #include "vigenere.h"  //界面2头文件
    #include <QGridLayout>
    namespace Ui {
    class content;
    }
    class content : public QFrame
    {
     Q_OBJECT
    public:
     explicit content(QWidget *parent = nullptr);
     QStackedWidget *stack;  
     affine *aff;   //界面1
     vigenere *vig;  //界面2
     ~content();
    signals:
    public slots:
    private:
     Ui::content *ui;
     QGridLayout *mainLayout;
    };
    #endif // CONTENT_H

content.cpp

#include "content.h"
#include "ui_content.h"

content::content(QWidget *parent) :
    QFrame(parent),
    ui(new Ui::content)
{
    ui->setupUi(this);
    stack = new QStackedWidget(this);
    stack->setFrameStyle(QFrame::Panel | QFrame::Raised);
    //插入页面
    aff = new affine();//指针名
    vig = new vigenere();
    stack -> addWidget(aff);
    stack -> addWidget(vig);
    mainLayout = new QGridLayout(this);
    mainLayout->setMargin(2); //参数固定为2
    mainLayout->addWidget(stack,0,0);

}

content::~content()
{
    delete ui;
}

mainwidow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "content.h"
#include <QGridLayout>
#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    content *con;
    QGridLayout *mainLayout;
    void createAction();
    void createToolBar();

private:
    QToolBar *stackTool;
    QAction *openStack[2];//界面数
    Ui::MainWindow *ui;

private slots:
    void openAffine();
    void openVigenere();


};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QGridLayout>
#include <QToolBar>
#define SHADOW_WIDT 5
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QWidget w;
    createAction();
    createToolBar();
    con = new content(this);
    setCentralWidget(con);


    w.show();

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow :: createAction(){
    openStack[0]=new QAction(tr("affine"),this);
    openStack[0]->setStatusTip(tr("界面一"));
    connect(openStack[0],SIGNAL(triggered(bool)),this,SLOT(openAffine()));

    openStack[1]=new QAction(tr("vigenere"),this);
    openStack[1]->setStatusTip(tr("界面二"));
    connect(openStack[1],SIGNAL(triggered(bool)),this,SLOT(openVigenere()));
}

void MainWindow::createToolBar(){
    stackTool = addToolBar("tools");
    stackTool->addAction(openStack[0]); //加入QToolBar头文件
    stackTool->addAction(openStack[1]);
}

void MainWindow::openAffine(){
    this->con->stack->setCurrentIndex(0);
}

void MainWindow::openVigenere(){
    this->con->stack->setCurrentIndex(1);
}

main.cpp

#include "mainwindow.h"
#include <QApplication>
#include <QFile>
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    }


    w.show();

    return a.exec();
}

comboBox

当comboBox所选值不一样时,textEdit显示不同的值
本部分参考博客链接

  1. mainWinodw.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    #include <QComboBox>
    #include <QMainWindow>
    namespace Ui {
    class MainWindow;
    }
    class MainWindow : public QMainWindow
    {
     Q_OBJECT
    public:
     explicit MainWindow(QWidget *parent = nullptr);
     ~MainWindow();
    private slots:
     void choose();//声明槽函数
    private:
     Ui::MainWindow *ui;
    };
    #endif // MAINWINDOW_H
  2. mainWindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QFile>
    MainWindow::MainWindow(QWidget *parent) :
     QMainWindow(parent),
     ui(new Ui::MainWindow)
    {
     ui->setupUi(this);
     connect(ui->comboBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(choose()));//信号
    }
    MainWindow::~MainWindow()
    {
     delete ui;
    }
    void MainWindow::choose(){
     if(ui->comboBox->currentIndex()==0){
         ui->port_line->setText(" "); 
     }
     else if(ui->comboBox->currentIndex()==1){
         ui->port_line->setText("2222");
     }
     else {
         ui->port_line->setText("1111");
     }
    }

注:currentIndex()对应comboBox里的值的顺序


QSS

Qt自己的CSS简称QSS

在QT中的应用

  1. 在QT所在的build文件中放入.css文件
  2. 在main.cpp文件中加入以下内容
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    QFile qssFile("qt.css");
    qssFile.open(QFile::ReadOnly);
    if(qssFile.isOpen()){
        QString qss = QLatin1String(qssFile.readAll());
        qApp->setStyleSheet(qss);
        qssFile.close();
    }
    w.show();

    return a.exec();
}

   转载规则


《Qt(基础1)》 fightingtree 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录