菜单
编辑菜单信息
转到槽函数
点击第一步按钮后右键点击图中所示的菜单属性
创建触发函数
添加槽函数内容
在mainwindow.cpp文件中对槽函数实现的功能进行细化
QWidget
Qt实现选项卡式界面
此部分参考链接
创建新的界面
- 实现各个界面对应功能(界面需继承自QWidget类)
- 新建一个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显示不同的值
本部分参考博客链接
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
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中的应用
- 在QT所在的build文件中放入.css文件
- 在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();
}