1. 子窗体或控件,重写paintEvent事件,画边框、背景、文字、图片效果比较好,因为窗口在创建的时候会自动调用paintEvent事件,所以可以在paintEvent事件中初始化一些自定义效果。用paintEvent 事件画边框,用QPalette设置背景。
// 画边框
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(QColor(225,70,56), 2));
// painter.setBrush(QColor(16,62,81)); // 也可设置背景,有时效果不好
painter.drawRoundedRect(rect(), 5.0, 5.0);
// 设置背景
QPalette pal = palette();
pal.setBrush(QPalette::Window, QColor(16,62,81));
setPalette(pal);
setAutoFillBackground(true);
2. QStringList 输出
QStringList m_strLang << "English" << "Chinese";
qDebug("set language: %s", m_strLang.at(0).toLocal8Bit().constData());
3. QStringList 使用注意
QStringList strDateformatList;
strDateformatList
<< m_strMonth + "-" + m_strDay + "-" + m_strYear
<< m_strDay + "-" + m_strMonth + "-" + m_strYear
<< m_strYear + "-" + m_strMonth + "-" + m_strDay;
如果strDateformatList 在生命周期内多次调用,则会多次插入字符串,使得字符串重复,这不是我们想要的。那就定义为局部变量,每次会重新赋值,达到更新的目的。
4.需要动态刷新的页面可以在showEvent函数中刷新。
5. 用paintEvent或用调色板为QWidget填充背景时,需要加上setAutoFillBackground(true);语句,否则没效果。
6. 想使弹出的窗口为圆角,用paintEvent画圆角矩形,但四个直角仍然存在,不美观。可以把背景设为透明,用paintEvent画出想要的背景,因为四个角没有画上背景,是透明的,所以看不见。
// 设置背景为透明 (构造函数中)
QPalette pal = palette();
pal.setBrush(QPalette::Window, QColor(255, 255, 255, 0));
setPalette(pal);
setAutoFillBackground(true);
// 画背景和边框 (paintEvent函数中)
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(QColor(225,70,56), 2));
painter.setBrush(QColor(16,62,81));
painter.drawRoundedRect(rect(), 5.0, 5.0);
7. Qt::Key_Enter、Qt::Key_Reture
Qt::Key_Enter对应小键盘的Enter键
Qt::Key_Return对应大键盘的Enter键
8. 事件过滤。窗口部件的事件到达目的地之前提前获取并处理相关事件,实现个性化的处理。
我在QLabel对象中放入两个QPushButton对象和两个QLabel对象,QPushButton实现值的调节,其中一个QLabel对象用于显示值,一个QLabel对象用于显示标题。类似SpinBox。在多个SpinBox上点击实现焦点切换,当鼠标点到QPushButton上时,QPushButton处理了mousePressEvent事件,所以无法实现焦点切换。为两个QPushButton对象安装事件过滤器,然后在其父部件中处理eventFilter函数
m_btnLeft->installEventFilter(this);
m_btnRight->installEventFilter(this);
//安装事件过滤器后,传给m_btnLeft、m_btnRight的事件会首先发送给eventFilter函数
bool ESpinBoxItem::eventFilter(QObject*obj,QEvent*ev)
{
if(obj == m_btnLeft || obj == m_btnRight)
{
if(ev->type() == QEvent::MouseButtonPress)
{
emit sign_spinBoxPressed(m_nItem);
return true; // 不传给目标对象处理
}
}
return false; // 不处理的事件则传给目标对象处理
}
10. 拍照动画
使用QTimeLine和QGraphicsPixmapItem对象,当时间线帧改变时,设置QGraphicsPixmapItem的位置,实现动画效果。
// 在QGraphicsView构造函数中
// take photo animation
m_timerAnimation = new QTimeLine(900);
m_timerAnimation->setCurveShape(QTimeLine::LinearCurve);
m_timerAnimation->setFrameRange(0, 240);
m_pixmapUpAnimation = QPixmap(":/images/animation.png");
m_pixmapDownAnimation = QPixmap(":/images/animation.png");
m_upPixmapItem = new QGraphicsPixmapItem;
m_downPixmapItem = new QGraphicsPixmapItem;
m_upPixmapItem->setZValue(4);
m_downPixmapItem->setZValue(4);
m_upPixmapItem->setPos(0, 0); // 左上角为原点
m_downPixmapItem->setPos(0, 240);
scene()->addItem(m_upPixmapItem);
scene()->addItem(m_downPixmapItem);
m_upPixmapItem->hide();
m_downPixmapItem->hide();
connect(m_timerAnimation, SIGNAL(frameChanged(int)), this, SLOT(slot_playAnimation(int)));
// 槽函数
void EGraphicsView::slot_playAnimation(int nFrame)
{
m_upPixmapItem->show();
m_downPixmapItem->show();
qDebug("nFrame: %d", nFrame);
if(nFrame < 120)
{
m_upPixmapItem->setPixmap(m_pixmapUpAnimation.scaled(320, nFrame));
m_downPixmapItem->setPixmap(m_pixmapDownAnimation.scaled(320, nFrame));
m_downPixmapItem->setPos(0, 240 - nFrame);
}
else
{
m_upPixmapItem->setPixmap(m_pixmapUpAnimation.scaled(320, 240 - nFrame));
m_downPixmapItem->setPixmap(m_pixmapDownAnimation.scaled(320, 240 - nFrame));
m_downPixmapItem->setPos(0, nFrame);
}
}
11.在移动设备上使用渐变或使用渐变的图片时,会出现条纹状,达不到效果。在初始化QApplication对像前调用下面的语句则可以达到效果:
QApplication::setColorSpec(QApplication::ManyColor); //the right choice for applications that use thousands of colors
QApplication app(argc, argv, QApplication::GuiServer );
12.用setStyleSheet设置背景图片
m_labelButton->setStyleSheet("background-image: url(:images/shutdown/slider.png); background-repeat: no-repeat;"); //注意,不加background-repeat: no-repeat可能会出现透视,很丑。QLabel对象可用setPixmap设置象素图。
13.使对话框圆角
//构造函数中
setAutoFillBackground(true);
QPalette pal = palette();
pal.setColor(QPalette::Window, QColor(0, 0, 0, 0));
setPalette(pal);
//paintEvent函数中
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing,true);
painter.setPen(QPen(Qt::red,2));
painter.setBrush(QColor(16,62,81));
painter.drawRoundedRect(rect(),5.0,5.0);
// 圆角处有杂色,原因不祥
14. 对某些默认事件的处理修改
正常情况下,按下Tab键,被QWidget看成是去移动键盘焦点,但少数窗口部件需要自行解释。
bool MyClass::event(QEvent *e)
{
if(e->type() == QEvent::KeyPress)
{
QKeyEvent *ke = (QKeyEvent *)e;
if(ke->key() == Qt::Key_Tab)
{
//这里是特定的Tab处理
k->accept();
return TRUE;
}
}
else if(e->type() >= QEvent::User)
{
// 这里是自定义事件处理
return TRUE;
}
QWidget::event(e);
}
15.QLabel继承QFrame,有QFrame的特性。如setFrameStyle(int)可设置QLabel的FrameStyle(框架类型)
FrameStyle有两种:
a.第一种是frameshape:
有以下几种类型:
Constant
Value
Description
QFrame::NoFrame
0
QFrame draws nothing
QFrame::Box
0x0001
QFrame draws a box around its contents
QFrame::Panel
0x0002
QFrame draws a panel to make the contents appear raised or sunken
QFrame::StyledPanel
0x0006
draws a rectangular panel with a look that depends on the current GUI style. It can be raised or sunken.
QFrame::HLine
0x0004
QFrame draws a horizontal line that frames nothing (useful as separator)
QFrame::VLine
0x0005
QFrame draws a vertical line that frames nothing (useful as separator)
QFrame::WinPanel
0x0003
draws a rectangular panel that can be raised or sunken like those in Windows 95. Specifying this shape sets the line width to 2 pixels. WinPanel is provided for compatibility. For GUI style independence we recommend using StyledPanel instead.
b.第二种是frameshadow
有以下几种类型:
Constant
Value
Description
QFrame::Plain
0x0010
the frame and contents appear level with the surroundings; draws using the paletteQPalette::WindowText color (without any 3D effect)
QFrame::Raised
0x0020
the frame and contents appear raised; draws a 3D raised line using the light and dark colors of the current color group
QFrame::Sunken
0x0030
the frame and contents appear sunken; draws a 3D sunken line using the light and dark colors of the current color group
组合值的效果图:
15.几种位置信息 x()、y()、pos()函数都是获得整个窗体左上角的坐标位置。需frameGeometry与geometry相对应,frameGemometry()是获得整个窗体的左上顶点和长、宽值,需geometry()函数获得的是窗体内中央域的左上顶点坐标以及长、宽值。直接调用width()和height()函数获得的是中央区域的长和宽的值。还有两个函数rect()、size(),调用它们获得的结果也都是对于窗体的中央区域而言的。size()获得的是窗体中央区域的长、宽值,rect()与geometry()一样返回一个QRect对象。其中,两个函数获得的长宽、值是一样的,都是窗体中央区域的长、宽值,只是左上顶点的坐标值不一样,geometry()获得的左上角顶点坐标是相对于父窗体而言的坐标,而rect()获得的左上角顶点坐标始终为(0, 0)。 效果图:
窗体在左上角时:
16.几种输入对话框。
a.获取文本对话框 QString strName =QInputDialog::getText(this,tr("User Name"),tr("Please Input New Name:"),QLineEdit::Normal,m_labelName->text(),&ok);
b.获取项对话框 QStringList list; list<
QStringstrSex=QInputDialog::getItem(this,tr("User Sex"),tr("Please Select Sex:"),list,0,false,&ok);
c.获取整数对话框 bool ok; int nAge = QInputDialog::getInteger(this, tr("User Age"), tr("Please Input Age:"), m_labelAge->text().toInt(), 18, 30, 1, &ok); if(ok) { m_labelAge->setText(QString(tr("%1").arg(nAge))); } d.获得双精度对话框 boolok; double nHeight = QInputDialog::getDouble(this, tr("User Height"), tr("Please Input Height:"), m_labelHeight->text().toDouble(), 160.5, 270.5, 1, &ok); if(ok) { m_labelHeight->setText(QString(tr("%1").arg(nHeight))); }
17.自定义QMessageBox QMessageBox customMsgBox; customMsgBox.setWindowTitle("Custom message box"); QPushButton *lockButton = customMsgBox.addButton(tr("Lock"), QMessageBox::ActionRole); QPushButton *unlockButton = customMsgBox.addButton(tr("Unlock"), QMessageBox::ActionRole); QPushButton *cancelButton = customMsgBox.addButton(QMessageBox::Cancel); customMsgBox.setIconPixmap(QPixmap(":/images/1.png")); customMsgBox.setText(tr("This is a custom message box")); customMsgBox.exec(); if(customMsgBox.clickedButton() == lockButton) { m_labelMessage->setText("Custom MessageBox button / lock"); } else if(customMsgBox.clickedButton() == unlockButton) { m_labelMessage->setText("Custom MessageBox button / unlock"); } else if(customMsgBox.clickedButton() == cancelButton) { m_labelMessage->setText("Custom MessageBox button / Cancel"); } 效果图:
定义好的MessageBox QMessageBox::question QMessageBox::information QMessageBox::warning QMessageBox::critical QMessageBox::about QMessageBox::aboutQt
18.在编写程序时,初始化窗体时最好不要使用setGeometry()函数,而用resize()和move()函数代替,因为使用setGeometry()会导致窗体show()之后在错误的位置上停留很短暂的一段时间,带来闪烁现象。 19.提示错误:E:\vm_shared\study\graphicsview\debug\moc_navibar.cpp:39: error: `staticMetaObject' is not a member of `QGraphicsRectItem' 错误原因:因为QGraphicsRectItem不是QObject的子类,所以在类的声明中不能有Q_OBJECT宏、signal和slot。 20.抓图功能: // 使用Qt自带的静态函数grabWindow,指定窗体ID,抓图的起启位置和面积大小。 QImage image = QPixmap::grabWindow(QApplication::desktop()->winId(), 0, 0, nDesktopWidth, nDesktopHeight).toImage().scaled(640, 480); 21.视图去掉滚动条 view->setFrameShape(QFrame::NoFrame); 通过布局指定视图的父窗体时,使用上面代码去不掉滚动条。而需要使用view = new QGraphicsView(this);指定父窗体。 最好办法是: view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 一直关掉滚动条 22.QpushButton圆角 QPushButton { border: 2px solid #8f8f91; border-radius: 6px; background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #f6f7fa, stop: 1 #dadbde); min-width: 80px; } note: 当QPushButton无边框(border: 0px;),有设置背景颜色(background-color: rgb(6,43,58);)时,设置圆角会出现锯齿,因为圆角是边框为圆角,边框大小不能为0px.想让按钮只显示一种颜色(看不见边框颜色),则把边框颜色设为背景色即可。如图:
你可能感兴趣的:(QT编程)
信号和槽介绍、使用方式
无_欲
Qt qt c++
一、信号与槽的简介信号与槽是Qt的编程基础,是Qt编程的核心特性,也是Qt区别与其它C++开发框架的重要特性。信号:是在特定情况下被发射的通知,例如QPushButton较常见的信号就是点击时发射的clicked()信号。GUI程序设计的主要工作就是对界面上各组件的信号进行响应,只需要知道什么时候发射哪些信号,合理的去响应和处理这些信号就可以了。槽(slot)是对信号进行响应的函数。槽就是函数,所
QT 常用模块介绍以及使用说明
我写代码菜如坤
qt 数据库
当学习QT编程时,掌握以下几个关键模块是非常重要的。下面是每个模块的简要说明及示例程序:QtWidgets模块:说明:QtWidgets模块包含用于创建传统桌面应用程序的UI控件。示例程序:#include#includeintmain(intargc,char*argv[]){QApplicationapp(argc,argv);QWidgetwindow;window.setWindowTit
Qt的基本操作
学代码的咸鱼
Qt qt
文章目录1.QtHelloWorld程序1.1通过图形化界面的方式1.2通过代码的方式实现2.Qt的编码问题3.使用输入框实现helloworld4.使用按钮实现helloworld5.Qt编程注意事项6.查询文档的方式7.认识Qt坐标系1.QtHelloWorld程序1.1通过图形化界面的方式我们先讲解第一种方式,用图形化界面的方式,我们先打开widget.ui进入Qtdesigner:进入之后
Qt信号与槽机制原理
whu_wyc
C/C++ qt
QT的信号与槽原理信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念、元对象工具以及在实际使用过程中应注意的一些问题。QT是一个跨平台的C++GUI应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等特点,更为引人注目的是目前Linux上最为流行的KDE桌面环境就是建立在QT库的基础之上。QT支持下列平台:MS/WINDOWS-95、98
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第六天-Qt UDP编程(物联技术666)
vx349014857
嵌入式培训课程笔记 笔记 c++ qt
链接:https://pan.baidu.com/s/1-u7GvgM0TLuiy9z7LYQ80Q?pwd=1688提取码:1688在Qt中提供了QUdpSocket类来进行UDP数据报(datagrams)的发送和接收。这里我们还要了解一个名词Socket,也就是常说的“套接字”。Qt网络之UDP网络基础学习是本文要介绍的内容,UDP(UserDatagramProtocol即用户数据报协议)
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第五天-Qt编程技巧若干解答(物联技术666)
vx349014857
QT qt LINUX C++
链接:https://pan.baidu.com/s/1-u7GvgM0TLuiy9z7LYQ80Q?pwd=1688提取码:1688============QT在Windows下制作图表============QT是跨平台的程序设计库,在windows下的程序往往想要有一个好看的图标,方法如下:1.准备个ICO图标。例如:myappico.ico2.用写字版新建个文件,里面就写一行:IDI_IC
Python Qt GUI设计:信号与槽的使用方法(基础篇—7)
不脱发的程序猿
1、信号与槽的概念信号(signal)和槽(slot)是Qt的核心机制,也是在PyQt编程中对象之间进行通信的机制。在创建事件循环之后,通过建立信号和槽的连接就可以实现对象之间的通信。当信号发射(emit)时,连接的槽函数将会自动执行。信号(signal)是在特定情况下被发射(emit)的一种通告。GUI程序设计的主要内容就是对界面上各组件发射的特定信号进行响应,只需要知道什么情况下发射了哪些信号
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第五天-Qt 键盘(物联技术666)
物联技术666
嵌入式培训笔记 笔记 c++ qt 开发语言
链接:https://pan.baidu.com/s/1Rq8PQRV1liuIXML0JKOX_Q?pwd=1688提取码:1688focus一个拥有焦点(focus)的QWidget才可以接受键盘事件。有输入焦点的窗口是活动窗口或活动窗口子窗口或子子窗口等。焦点移动的方式有以下几种:按下Tab或Shift+Tab注意:文本编译器(一般需要插入Tab),或者WebView(需要Tab来移动超链接
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第五天-Qt 常见问题(物联技术666)
物联技术666
嵌入式培训笔记 笔记 qt c++ 开发语言 嵌入式硬件
链接:https://pan.baidu.com/s/1GASCCewISEb6zJYOStmg6g?pwd=1688提取码:16881QWidget类有什么用途?在Qt应用程序中,QWidget用做工作空间.它是底层窗口,在其上可以放置其他对象,如按钮等.2a.setMainWidget(&mainwindow);语句的意义是什么?这段代码告诉Qt,说明mainwindow对象是程序的主部件.当
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第五天-Qt 显示中文问题(物联技术666)
物联技术666
嵌入式培训笔记 笔记 c++ qt 开发语言 c语言
链接:https://pan.baidu.com/s/1GASCCewISEb6zJYOStmg6g?pwd=1688提取码:1688先包含头文件#include调用下面三个函数之一(括号内codec的具体内容见main函数的使用方法)QTextCodec::setCodecForCStrings(codec);//这个函数主要是用在字符常量或者QByteArray构造QString对象时使用的一
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第五天-Qt 事件(物联技术666)
vx349014857
嵌入式培训课程笔记 笔记 c++ qt linux 开发语言
链接:https://pan.baidu.com/s/1Rq8PQRV1liuIXML0JKOX_Q?pwd=1688提取码:1688事情:事件由窗口系统或Qt自身产生。用以响应各种行为或情况。比如:鼠标点击,鼠标移动到窗口上,键盘输入键值,窗口大小的变换,按键被点击的动作等等。事件处理过程:1.在Qt内部,Qt通过QApplication::exec()启动的主事件循环不停的抓取事件队列中的事件
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第五天-Qt 键盘(物联技术666)
vx349014857
嵌入式培训课程笔记 笔记 c++ qt 开发语言 linux
链接:https://pan.baidu.com/s/1Rq8PQRV1liuIXML0JKOX_Q?pwd=1688提取码:1688focus一个拥有焦点(focus)的QWidget才可以接受键盘事件。有输入焦点的窗口是活动窗口或活动窗口子窗口或子子窗口等。焦点移动的方式有以下几种:按下Tab或Shift+Tab注意:文本编译器(一般需要插入Tab),或者WebView(需要Tab来移动超链接
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第四天-C++动态联编和虚函数练习(物联技术666)
vx349014857
嵌入式培训课程笔记 笔记 c++ qt linux 开发语言
链接:https://pan.baidu.com/s/1KayCjn6Vem9YFucS8lpCFg?pwd=1688提取码:1688设计一个动物类:动物有一个name成员,另外有三个函数sleep(),eat(),play();从动物这个类派生出狗类和猫类,在对应的三个函数中实现输出如下信息的功能:dog(orcat)(name)issleepping...!dog(orcat)(name)is
Qt/QML编程之路:OpenGL的示例(39)
芯片-嵌入式
qt qml
Qt编程之后,会发现有版本问题,有时候一个示例不同的版本下可能会跑不同,有些Qt5跑不同Qt6已经完善,可以跑通。我就看到有个关于OpenGL的示例:这个示例是演示怎么基于OpenGL编程的,但是调试时却发现glViewXXX等gl打头的函数说找不到reference,或者什么link不上之类的错误,最终原因就是没有找到加载库。光有QT+=里面的opengl还不够,仍然需要一个openGL库的加载
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第三天-C++类和对象高级应用(物联技术666)
物联技术666
嵌入式培训笔记 笔记 c++ qt 开发语言 c语言 服务器 物联网
链接:https://pan.baidu.com/s/1YRXI0WiABUlYaQXQDNfbyA?pwd=1688提取码:1688上午:类和对象高级应用(续)下午:派生和继承教学内容:1、友元类的私有成员只能在类定义的范围内使用,也就是说私有成员只能通过它的成员函数来访问但是,有时候需要在类的外部访问类的私有成员。为此,就需要寻找一种途径,在不放弃私有数据安全性的情况下,使得类外部的函数或类能
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第二天-类与对象(物联技术666)
物联技术666
嵌入式培训笔记 笔记 linux c语言 网络 c++ 物联网 开发语言
链接:https://pan.baidu.com/s/1Am83Ut449WCbuTiodwJWgg?pwd=1688提取码:1688上午:类和对象下午:类和对象高级应用教学内容:1、构造函数\析构函数\拷贝构造函数构造函数:每一个对象的创建都必须初始化,如果在没有写初始化函数(即构造函数),系统会默认写构造函数,但有些时候必须自己写构造函数。(比如,在定义初始化时候要申请空间或者牵涉指针)构造函
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第一天-C++概述和基础(物联技术666)
物联技术666
嵌入式培训笔记 笔记 c++ qt 单片机 嵌入式硬件 开发语言 网络
技术交流:wulianjishu666上午:C++概述下午:C++基础教学内容:1、面向对象:程序=(对象+对象+…)对象=(算法+数据结构)2、类与对象:对象是现实世界中的一个实体,其特征是:•每一个对象必须有一个名字以区别于其它对象•用属性(或叫状态)来描述它的某些特征•有一组操作,每一个操作决定对象的一种行为类的精确定义:具有共性的实体的抽象•类是创建对象的样板,包含对创建对象的状态描述和对
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第四天-C++动态联编和虚函数(物联技术666)
vx349014857
嵌入式培训课程笔记 笔记 linux 单片机 嵌入式硬件 qt c++ 开发语言
链接:https://pan.baidu.com/s/1QO44mZtlgbiStTuI6sQP4g?pwd=1688提取码:1688上午:动态联编和虚函数下午:QT介绍教学内容:1、动态联编和虚函数:编译程序在编译阶段并不能确切知道将要调用的函数,只有在程序运行时才能确定将要调用的函数,这要求联编工作要在程序运行时进行,这种在程序运行时进行联编工作称为动态联编。虚函数是动态联编的基础。虚函数是非
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第五天-Qt基础(物联技术666)
vx349014857
嵌入式培训课程笔记 笔记 c++ qt
链接:https://pan.baidu.com/s/1HENCN2TrrxRvvkAmPxonfg?pwd=1688提取码:1688QT常用快捷键ctrl+f高亮查找;ctrl+s保存ctrl+/注销F1对指定的文件帮助显示,连续2下,全屏显示ctrl+鼠标左键跳转到目标内容label:改变前景和背景是window和windowtext背景色必须勾选autofillbackgroundDialo
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第四天-Qt linux 环境搭建(物联技术666)
vx349014857
嵌入式培训课程笔记 笔记 c++ qt linux 开发语言
网盘链接:https://pan.baidu.com/s/1TKdHdeuDI8XPaakepvSLZQ?pwd=1688提取码:1688//========Qtlinux环境搭建========1、在虚拟机的/usr/local/目录下新建文件夹Trolltech#mkdir/usr/local/Trolltech(注意:不能写错)2、拷贝\\172.20.223.24\软件共享\开发相关\Qt
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第五天-Qt基础(物联技术666)
vx349014857
嵌入式培训课程笔记 笔记 c++ qt
链接:https://pan.baidu.com/s/1HENCN2TrrxRvvkAmPxonfg?pwd=1688提取码:1688QT常用快捷键ctrl+f高亮查找;ctrl+s保存ctrl+/注销F1对指定的文件帮助显示,连续2下,全屏显示ctrl+鼠标左键跳转到目标内容label:改变前景和背景是window和windowtext背景色必须勾选autofillbackgroundDialo
Qt之QSignalMapper
无尽V深海
Qt学习总结
资料来源:https://doc.qt.io/archives/qt-4.8/qsignalmapper.htmlhttps://blog.csdn.net/mcgrady_tracy/article/details/6996947在源码中存在大量的信号转发代码,也存在极少量信号转发器代码。从上述问题来看项目源码所出现问题单最终绝大部分可以归结于信号-槽问题。在QT编程中,如果遇到多个控件,但是他
【win11 绕过TPM CPU硬件限制安装】
光芒Shine
计算机知识点 windows
Qt编程指南VX:hao541022348■下载iso文件■右键文件点击装载出现如下问题■绕过TPMCPU硬件限制安装方法■虚拟机安装win11■下载iso文件选择Windows11(multi-editionISO)在选择中文■右键文件点击装载出现如下问题■绕过TPMCPU硬件限制安装方法新建文件夹win-23H2。打开iso文件内容,将所有内容拷贝到win-23H2中。修改sources/ap
【芯片手册区别】
光芒Shine
# Keil5 windows
Qt编程指南VX:hao541022348■芯片手册■用户手册usermanual(程序员)■数据手册datasheet(硬件)■参考手册(硬件)■芯片手册按功能划分主要就有两种手册。第一种主要作用是参考,是展示芯片的简介、电气、封装、引脚等,比较缩略,是在芯片选型时更关注的。有的叫参考手册、有的叫数据手册。第二种是更注重介绍软件开发,包括外设功能开发和寄存器描述。是软件工程师更关注的。有的叫数据
我的创作纪念日(随便唠唠)
若亦_Royi
开发语言 c语言 c++ 算法
机缘我在CSDN上面发表文章只是一时兴起,想着可以当作记录学习知识的一个笔记使用,并且我写的内容通常是我学习一段时间之后,经过了一段时间的沉淀(这个时间通常是三个月到半年),觉得理解的够深刻之后才会去写出来的,也想着去起到一个复习的作用。收获与其谈一谈收获,我觉得不如说一说我期望学什么,从基础的C语言的语法到C++,到Qt编程,系统编程,网络编程,服务器开发,单片机开发......,我希望的是我深
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第二天-类与对象(物联技术666)
vx349014857
嵌入式培训课程笔记 笔记 c++ qt linux 开发语言 网络
链接:https://pan.baidu.com/s/1Am83Ut449WCbuTiodwJWgg?pwd=1688提取码:1688上午:类和对象下午:类和对象高级应用教学内容:1、构造函数\析构函数\拷贝构造函数构造函数:每一个对象的创建都必须初始化,如果在没有写初始化函数(即构造函数),系统会默认写构造函数,但有些时候必须自己写构造函数。(比如,在定义初始化时候要申请空间或者牵涉指针)构造函
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第二天-C++类与对象练习题(物联技术666)
vx349014857
嵌入式培训课程笔记 笔记 c++ qt linux 开发语言
网盘链接:https://pan.baidu.com/s/1TKdHdeuDI8XPaakepvSLZQ?pwd=1688提取码:1688设计一个学生类,包括学号、姓名、成绩,并设计接口函数用来输出这些学生数据并计算平均分。并编写main函数进行测试:输出如:学号姓名成绩1张XX982王XX903XXX89平均成绩:XX//*************************************
嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第一天-C++概述和基础(物联技术666)
vx349014857
嵌入式培训课程笔记 笔记 c++ qt 单片机 开发语言 物联网
网盘链接:https://pan.baidu.com/s/1TKdHdeuDI8XPaakepvSLZQ?pwd=1688提取码:1688上午:C++概述下午:C++基础教学内容:1、面向对象:程序=(对象+对象+…)对象=(算法+数据结构)2、类与对象:对象是现实世界中的一个实体,其特征是:•每一个对象必须有一个名字以区别于其它对象•用属性(或叫状态)来描述它的某些特征•有一组操作,每一个操作决
QT编程基础
北地的树
qt
基本数据类型在中类型名称说明备注qint8signedchar有符号8位数据类型qint16signedshort有符号16位数据类型qint32signedint有符号32位数据类型qint64longlongint有符号64位数据类型quint8unsignedchar无符号8位数据类型quint16unsignedshort无符号16位数据类型quint32unsignedint无符号32位
QT 信号与槽不在同一个线程 connect
易日
QT qt 多线程 编程 线程
主线程中发出一个信号,另一个线程槽函数没有响应,这个问题搞了好几个小时,才发现原来是connect时候的第5个参数写错了,在这里做下备注吧。connect用于连接qt的信号和槽,在qt编程过程中不可或缺。它其实有第五个参数,只是一般使用默认值,在满足某些特殊需求的时候可能需要手动设置。Qt::AutoConnection:默认值,使用这个值则连接类型会在信号发送时决定。如果接收者和发送者在同一个线
Java序列化进阶篇
g21121
java序列化
1.transient
类一旦实现了Serializable 接口即被声明为可序列化,然而某些情况下并不是所有的属性都需要序列化,想要人为的去阻止这些属性被序列化,就需要用到transient 关键字。
escape()、encodeURI()、encodeURIComponent()区别详解
aigo
JavaScript Web
原文:http://blog.sina.com.cn/s/blog_4586764e0101khi0.html
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:,decodeURI,decodeURIComponent 。
下面简单介绍一下它们的区别
1 escape()函
ArcgisEngine实现对地图的放大、缩小和平移
Cb123456
添加矢量数据 对地图的放大、缩小和平移 Engine
ArcgisEngine实现对地图的放大、缩小和平移:
个人觉得是平移,不过网上的都是漫游,通俗的说就是把一个地图对象从一边拉到另一边而已。就看人说话吧.
具体实现:
一、引入命名空间
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Controls;
二、代码实现.
Java集合框架概述
天子之骄
Java集合框架概述
集合框架
集合框架可以理解为一个容器,该容器主要指映射(map)、集合(set)、数组(array)和列表(list)等抽象数据结构。
从本质上来说,Java集合框架的主要组成是用来操作对象的接口。不同接口描述不同的数据类型。
简单介绍:
Collection接口是最基本的接口,它定义了List和Set,List又定义了LinkLi
旗正4.0页面跳转传值问题
何必如此
java jsp
跳转和成功提示
a) 成功字段非空forward
成功字段非空forward,不会弹出成功字段,为jsp转发,页面能超链接传值,传输变量时需要拼接。接拼接方式list.jsp?test="+strweightUnit+"或list.jsp?test="+weightUnit+&qu
全网唯一:移动互联网服务器端开发课程
cocos2d-x小菜
web开发 移动开发 移动端开发 移动互联 程序员
移动互联网时代来了! App市场爆发式增长为Web开发程序员带来新一轮机遇,近两年新增创业者,几乎全部选择了移动互联网项目!传统互联网企业中超过98%的门户网站已经或者正在从单一的网站入口转向PC、手机、Pad、智能电视等多端全平台兼容体系。据统计,AppStore中超过85%的App项目都选择了PHP作为后端程
Log4J通用配置|注意问题 笔记
7454103
DAO apache tomcat log4j Web
关于日志的等级 那些去 百度就知道了!
这几天 要搭个新框架 配置了 日志 记下来 !做个备忘!
#这里定义能显示到的最低级别,若定义到INFO级别,则看不到DEBUG级别的信息了~!
log4j.rootLogger=INFO,allLog
# DAO层 log记录到dao.log 控制台 和 总日志文件
log4j.logger.DAO=INFO,dao,C
SQLServer TCP/IP 连接失败问题 ---SQL Server Configuration Manager
darkranger
sql c windows SQL Server XP
当你安装完之后,连接数据库的时候可能会发现你的TCP/IP 没有启动..
发现需要启动客户端协议 : TCP/IP
需要打开 SQL Server Configuration Manager...
却发现无法打开 SQL Server Configuration Manager..??
解决方法: C:\WINDOWS\system32目录搜索framedyn.
[置顶] 做有中国特色的程序员
aijuans
程序员
从出版业说起 网络作品排到靠前的,都不会太难看,一般人不爱看某部作品也是因为不喜欢这个类型,而此人也不会全不喜欢这些网络作品。究其原因,是因为网络作品都是让人先白看的,看的好了才出了头。而纸质作品就不一定了,排行榜靠前的,有好作品,也有垃圾。 许多大牛都是写了博客,后来出了书。这些书也都不次,可能有人让为不好,是因为技术书不像小说,小说在读故事,技术书是在学知识或温习知识,有些技术书读得可
document.domain 跨域问题
avords
document
document.domain用来得到当前网页的域名。比如在地址栏里输入:javascript:alert(document.domain); //www.315ta.com我们也可以给document.domain属性赋值,不过是有限制的,你只能赋成当前的域名或者基础域名。比如:javascript:alert(document.domain = "315ta.com");
关于管理软件的一些思考
houxinyou
管理
工作好多看年了,一直在做管理软件,不知道是我最开始做的时候产生了一些惯性的思维,还是现在接触的管理软件水平有所下降.换过好多年公司,越来越感觉现在的管理软件做的越来越乱.
在我看来,管理软件不论是以前的结构化编程,还是现在的面向对象编程,不管是CS模式,还是BS模式.模块的划分是很重要的.当然,模块的划分有很多种方式.我只是以我自己的划分方式来说一下.
做为管理软件,就像现在讲究MVC这
NoSQL数据库之Redis数据库管理(String类型和hash类型)
bijian1013
redis 数据库 NoSQL
一.Redis的数据类型
1.String类型及操作
String是最简单的类型,一个key对应一个value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。
Set方法:设置key对应的值为string类型的value
Tomcat 一些技巧
征客丶
java tomcat dos
以下操作都是在windows 环境下
一、Tomcat 启动时配置 JAVA_HOME
在 tomcat 安装目录,bin 文件夹下的 catalina.bat 或 setclasspath.bat 中添加
set JAVA_HOME=JAVA 安装目录
set JRE_HOME=JAVA 安装目录/jre
即可;
二、查看Tomcat 版本
在 tomcat 安装目
【Spark七十二】Spark的日志配置
bit1129
spark
在测试Spark Streaming时,大量的日志显示到控制台,影响了Spark Streaming程序代码的输出结果的查看(代码中通过println将输出打印到控制台上),可以通过修改Spark的日志配置的方式,不让Spark Streaming把它的日志显示在console
在Spark的conf目录下,把log4j.properties.template修改为log4j.p
Haskell版冒泡排序
bookjovi
冒泡排序 haskell
面试的时候问的比较多的算法题要么是binary search,要么是冒泡排序,真的不想用写C写冒泡排序了,贴上个Haskell版的,思维简单,代码简单,下次谁要是再要我用C写冒泡排序,直接上个haskell版的,让他自己去理解吧。
sort [] = []
sort [x] = [x]
sort (x:x1:xs)
| x>x1 = x1:so
java 路径 配置文件读取
bro_feng
java
这几天做一个项目,关于路径做如下笔记,有需要供参考。
取工程内的文件,一般都要用相对路径,这个自然不用多说。
在src统计目录建配置文件目录res,在res中放入配置文件。
读取文件使用方式:
1. MyTest.class.getResourceAsStream("/res/xx.properties")
2. properties.load(MyTest.
读《研磨设计模式》-代码笔记-简单工厂模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
package design.pattern;
/*
* 个人理解:简单工厂模式就是IOC;
* 客户端要用到某一对象,本来是由客户创建的,现在改成由工厂创建,客户直接取就好了
*/
interface IProduct {
SVN与JIRA的关联
chenyu19891124
SVN
SVN与JIRA的关联一直都没能装成功,今天凝聚心思花了一天时间整合好了。下面是自己整理的步骤:
一、搭建好SVN环境,尤其是要把SVN的服务注册成系统服务
二、装好JIRA,自己用是jira-4.3.4破解版
三、下载SVN与JIRA的插件并解压,然后拷贝插件包下lib包里的三个jar,放到Atlassian\JIRA 4.3.4\atlassian-jira\WEB-INF\lib下,再
JWFDv0.96 最新设计思路
comsci
数据结构 算法 工作 企业应用 公告
随着工作流技术的发展,工作流产品的应用范围也不断的在扩展,开始进入了像金融行业(我已经看到国有四大商业银行的工作流产品招标公告了),实时生产控制和其它比较重要的工程领域,而
vi 保存复制内容格式粘贴
daizj
vi 粘贴 复制 保存原格式 不变形
vi是linux中非常好用的文本编辑工具,功能强大无比,但对于复制带有缩进格式的内容时,粘贴的时候内容错位很严重,不会按照复制时的格式排版,vi能不能在粘贴时,按复制进的格式进行粘贴呢? 答案是肯定的,vi有一个很强大的命令可以实现此功能 。
在命令模式输入:set paste,则进入paste模式,这样再进行粘贴时
shell脚本运行时报错误:/bin/bash^M: bad interpreter 的解决办法
dongwei_6688
shell脚本
出现原因:windows上写的脚本,直接拷贝到linux系统上运行由于格式不兼容导致
解决办法:
1. 比如文件名为myshell.sh,vim myshell.sh
2. 执行vim中的命令 : set ff?查看文件格式,如果显示fileformat=dos,证明文件格式有问题
3. 执行vim中的命令 :set fileformat=unix 将文件格式改过来就可以了,然后:w
高一上学期难记忆单词
dcj3sjt126com
word english
honest 诚实的;正直的
argue 争论
classical 古典的
hammer 锤子
share 分享;共有
sorrow 悲哀;悲痛
adventure 冒险
error 错误;差错
closet 壁橱;储藏室
pronounce 发音;宣告
repeat 重做;重复
majority 大多数;大半
native 本国的,本地的,本国
hibernate查询返回DTO对象,DTO封装了多个pojo对象的属性
frankco
POJO hibernate查询 DTO
DTO-数据传输对象;pojo-最纯粹的java对象与数据库中的表一一对应。
简单讲:DTO起到业务数据的传递作用,pojo则与持久层数据库打交道。
有时候我们需要查询返回DTO对象,因为DTO
Partition List
hcx2013
partition
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of th
Spring MVC测试框架详解——客户端测试
jinnianshilongnian
上一篇《Spring MVC测试框架详解——服务端测试》已经介绍了服务端测试,接下来再看看如果测试Rest客户端,对于客户端测试以前经常使用的方法是启动一个内嵌的jetty/tomcat容器,然后发送真实的请求到相应的控制器;这种方式的缺点就是速度慢;自Spring 3.2开始提供了对RestTemplate的模拟服务器测试方式,也就是说使用RestTemplate测试时无须启动服务器,而是模拟一
关于推荐个人观点
liyonghui160com
推荐系统 关于推荐个人观点
回想起来,我也做推荐了3年多了,最近公司做了调整招聘了很多算法工程师,以为需要多么高大上的算法才能搭建起来的,从实践中走过来,我只想说【不是这样的】
第一次接触推荐系统是在四年前入职的时候,那时候,机器学习和大数据都是没有的概念,什么大数据处理开源软件根本不存在,我们用多台计算机web程序记录用户行为,用.net的w
不间断旋转的动画
pangyulei
动画
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M
自定义annotation
sha1064616837
java enum annotation reflect
对象有的属性在页面上可编辑,有的属性在页面只可读,以前都是我们在页面上写死的,时间一久有时候会混乱,此处通过自定义annotation在类属性中定义。越来越发现Java的Annotation真心很强大,可以帮我们省去很多代码,让代码看上去简洁。
下面这个例子 主要用到了
1.自定义annotation:@interface,以及几个配合着自定义注解使用的几个注解
2.简单的反射
3.枚举
Spring 源码
up2pu
spring
1.Spring源代码
https://github.com/SpringSource/spring-framework/branches/3.2.x
注:兼容svn检出
2.运行脚本
import-into-eclipse.bat
注:需要设置JAVA_HOME为jdk 1.7
build.gradle
compileJava {
sourceCompatibilit
利用word分词来计算文本相似度
yangshangchuan
word word分词 文本相似度 余弦相似度 简单共有词
word分词提供了多种文本相似度计算方式:
方式一:余弦相似度,通过计算两个向量的夹角余弦值来评估他们的相似度
实现类:org.apdplat.word.analysis.CosineTextSimilarity
用法如下:
String text1 = "我爱购物";
String text2 = "我爱读书";
String text3 =