求教编程高手教我如何用Qt实现两窗口切换,比如点击窗口A后,窗口Bd出,而窗口A自动关闭...

求教编程高手教我如何用Qt实现两窗口切换,比如点击窗口A后,窗口Bd出,而窗口A自动关闭...,第1张

//窗口A
#ifndef A_H
#define A_H
#include <QWidget>
#include <QMouseEvent>
class A : public QWidget
{
Q_OBJECT
public:
explicit A(QWidget parent = 0);
signals:
void showB(bool isShow);
protected:
void mousePressEvent(QMouseEvent event);
public slots:
};
#endif // A_H
//Acpp
#include "ah"
A::A(QWidget parent) :
QWidget(parent)
{
this->setWindowTitle("我是A");
}
void A::mousePressEvent(QMouseEvent event){
if(event->button()==Qt::LeftButton){
emit showB(true);
this->deleteLater();
}
}
//窗口B
#ifndef B_H
#define B_H
#include <QWidget>
class B : public QWidget
{
Q_OBJECT
public:
explicit B(QWidget parent = 0);
signals:
public slots:
void showB(bool isShow);
};
//Bcpp
#include "bh"
B::B(QWidget parent) :
QWidget(parent)
{
this->setWindowTitle("我是B");
}
void B::showB(bool isShow){
if(isShow)
this->show();
else
this->deleteLater();
}
//maincpp
#include <QtGui/QApplication>
#include <QTextCodec>
#include "ah"
#include "bh"
int main(int argc, char argv[])
{
QApplication x(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
B b=new B();
A a=new A();
QObject::connect(a,SIGNAL(showB(bool)),b,SLOT(showB(bool)));
a->show();
return xexec();
}

主界面的LayoutSizeConstraint设成SetFixedSize 或者把SizePolicy设成Fixed先把WindowsFlag设为FrameLessWindow,即无边框窗口。否则边框由系统绘制,Qt本身是无法做出修改的。不过这样的话,若要提供边框拖动缩放、标题栏等,需要自行绘制,Qt提供了QToolButton来实现标题栏按钮,用QRubberBand实现拖动的虚线框。

Qt改变界面文字有很多方法(下面以Label控件为例):

1通过Qt Creater:

拖一个Label到窗体上,对着Label右键->改变多信息文本,里面就可以修改Label的内容、颜色、字体样式等等。

2通过代码:

QLabel label = new QLabel("Hello World!"); //新建一个显示"Hello World"的Label
//使用setPalette()方法改变颜色
QPalette pt;
ptsetColor(QPalette::WindowText, Qt::red); //设置为红色
label->setPalette(pt);
    
//使用setFont()方法改变字体样式
QFont font("Microsoft YaHei", 12,75); //设置为微软雅黑,字体12号,加粗
/常见权重(第三个参数):
QFont::Light - 25        高亮
QFont::Normal - 50    正常
QFont::DemiBold - 63  半粗体
QFont::Bold - 75        粗体
QFont::Black - 87       黑体/
    
label->setFont(font);
    
//使用样式表改变颜色
label->setStyleSheet("color:blue;"); //设置为蓝色
    
//使用简单的HTML样式改变颜色和样式
QLabel label2 = new QLabel("<h2><i>Hello</i>"
                "<font color=red>World!</font></h2>")

参考资料:

CSDN 《C++ GUI Qt 4编程》


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13391540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-27
下一篇 2023-07-27

发表评论

登录后才能评论

评论列表(0条)

保存