qt 声明mousePressEvent等事件虚函数时,没有任何提示 5C

看别人的教学视频,在头文件中加入protected: 输入void mou……后面就出提示,而我一直输入到最后也没提示,见图。第一个图是别人视频中的,
图片说明

第二个图是我的:

图片说明

PS:我用的是QT creator 4.8.0 QT是5.12.0。用笔记本和台式机都测试过,笔记本中的QT还重新安装了一次。

2个回答

naca2412
naca2412 这个链接我看了,我不是要重载函数啊,我的问题是没有显示提示。
11 个月之前 回复

检查一下安装的位置对不对,引用的头文件访问是否正确

fumentl
heisenberg cooper 回复naca2412: 你好 我用的5.9跟你情况一样 老版本就可以提示 但是老版本的提示不如新版本好 不知道是不是5.7-13这几个版本有BUG
9 个月之前 回复
naca2412
naca2412 您好,我又测试了一下,我刚换电脑用qt5.3.2版本一切正常,同一台电脑重装qt5.12就出现这个问题。这是个新版的bug?
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
请问QT组件提升后不显示,是什么原因?
![图片说明](https://img-ask.csdn.net/upload/201911/17/1574000284_218606.png) 我设计的界面:窗口中央的label属于从QLabel提升的QPaintLabel类 ![图片说明](https://img-ask.csdn.net/upload/201911/17/1574000436_634825.png) 运行时的情况:并没有显示label ![图片说明](https://img-ask.csdn.net/upload/201911/17/1574000935_777176.png) 请问组件提升后不显示,是什么原因呢? 本人刚学QT,有所不知,还请大神相助。 QPaintLabel类的代码如下 ``` ## QPaintLabel.h #pragma once #include <qlabel.h> #include <QtWidgets/QScrollArea> #include <qpainter.h> #include <QMouseEvent> #include <QtWidgets/QMainWindow> class QPaintLabel: public QLabel { Q_OBJECT private: QList<QRect> rects; //记录点的坐标大小 public: QPaintLabel(QWidget* parent = 0) :QLabel(parent) //构造函数 { } ~QPaintLabel() {} protected: void mousePressEvent(QMouseEvent* event); //鼠标点击,画圆 void mouseMoveEvent(QMouseEvent* event); //鼠标移动,连续画 void paintEvent(QPaintEvent* event) ; //画圆 }; ``` ``` ## QPaintLabel.c void QPaintLabel::paintEvent(QPaintEvent*) { QPainter painter(this); QList<QRect>::iterator it; for (it=rects.begin();it<rects.end();it++) { painter.drawEllipse(*it); //画圆 } painter.end(); } void QPaintLabel::mousePressEvent(QMouseEvent* event) { QPoint point; if (event->button() == Qt::LeftButton) { point.setX(event->x()); point.setY(event->y()); rects.append(QRect(QPoint(point), QSize(10, 10))); this->repaint(); } } void QPaintLabel::mouseMoveEvent(QMouseEvent* event) { QPoint point; point.setX(event->x()); point.setY(event->y()); rects.append(QRect(QPoint(point), QSize(10, 10))); this->repaint(); } ```
qt信号槽和emit 还有鼠标点击事件的问题
如何通过鼠标点击事件(mousepressevent)发送一个自定义的signal?为什么他一直提示signal没有定义,明明头文件有?
Qt 如何清除在窗口上已画的图形
首先我将主窗口设置为透明: ``` MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); setWindowOpacity(1); setWindowFlags(Qt::FramelessWindowHint); setAttribute(Qt::WA_TranslucentBackground); .... ``` 然后我希望在主窗口上画各种图形(直线,圆等),检测鼠标左键按下,记录第一个点位置,然后鼠标移动时可以从第一个点的位置画一条到当前位置的直线,大致代码如下: ``` void MainWindow::mousePressEvent(QMouseEvent *e) { if (e->button() == Qt::LeftButton) { firstPnt = e->pos(); } } void MainWindow::mouseMoveEvent(QMouseEvent *e) { QPoint pnt = e->pos(); curPnt.setX(e->x()); curPnt.setY(e->y()); this->repaint(0, 0, 1920, 1080); } ``` 我的主窗口是1920*1080,调用repaint后会执行paintEvent: ``` void MainWindow::paintEvent(QPaintEvent *e) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); painter.setPen(QPen(Qt::black, 4, Qt::SolidLine, Qt::RoundCap)); painter.drawLine(firstPnt.x(), firstPnt.y(), curPnt.x(), curPnt.y()); } ``` 但是repaint并没有把原先的图形清除掉,而且鼠标移动画图过程非常卡顿,有什么好的方法么,我才接触QT不到一星期,大佬帮帮忙。
Qt mouseMoveEvent左键按住移动也不触发?
有相同情况的么?我想做一个上下翻页的动作.现在能触发mousePressEvent,但是mouseMoveEvent和mouseReleaseEvent都触发不了。 当前窗口有子窗口,但是这不影响当前窗口的事件触发吧
qt 中创建第二个Mainwindow时出现的问题
在一个qt项目中创建了个mainwindow2 在头文件中加入 protected: void paintEvent(QPaintEvent *); void mousePressEvent(QMouseEvent *); private slots: void updateMap(); void gameStart(); 时有错误 :-1: error: symbol(s) not found for architecture x86_64 :-1: error: linker command failed with exit code 1 (use -v to see invocation) 求大神指导,感激不尽
求问大神:Qt用label显示图片,如何实现第一次点击后显示矩形,第二次点击后再显示一个矩形,之前的不消失
求问大家,我用label显示图片,重写paintEvent来显示鼠标点击位置的一个矩形,在 mousePressEvent里用update()来实现随鼠标位置更新矩形,但是这样就会使之前的 矩形消失。 怎么样才能实现鼠标每点击一次,在鼠标位置显示一个矩形,且之前的不会消失。 代码如下: **QImageLabel.h** ``` class QImageLabel : public QLabel { Q_OBJECT public: QImageLabel(QWidget *parent = 0); virtual ~QImageLabel(); protected: void paintEvent(QPaintEvent *event); void mousePressEvent(QMouseEvent *event); private: QPoint currentpos; }; ``` **QImageLabel.cpp** ``` #include "QImageLabel.h" #include <QtWidgets> QImageLabel::QImageLabel(QWidget *parent): QLabel(parent) { currentpos.setX(0); currentpos.setY(0); } QImageLabel::~QImageLabel() { } void QImageLabel::paintEvent(QPaintEvent *event) { QLabel::paintEvent(event); //需要调用父类的paintEvent事件,否则Label都无法绘制 QPainter painter(this); painter.setPen(Qt::red); painter.drawRect(currentpos.x() - 30, currentpos.y() - 30, 60, 60); } void QImageLabel::mousePressEvent(QMouseEvent *event) { currentpos = event->pos(); update(); } ```
在qtextedit中实现用鼠标点击图片一角,拖动来缩放图片,要怎么实现?
我的想法是先获得图片的坐标,然后通过重写mousePressEvent,mouseMoveEvent等来实现,但是我现在连坐标都不知道怎么获取,小弟小白一个,搜索了好久没有找到解决方案,求教各位
为什么PyQt5 Qss中QPushButton按钮background-color效果无效?
PyQt5 Qss中QPushButton按钮background-color效果无效 [QT样式表设置背景色 background-color无效的原因](https://blog.csdn.net/qq_31073871/article/details/79965015 "")的方法不能解决问题 ```python import sys from PyQt5.QtWidgets import QWidget,QPushButton,QLineEdit,QTextEdit,QHBoxLayout,QVBoxLayout,QLabel,QListView,QFrame,QApplication from PyQt5.QtCore import QEvent,Qt,QStringListModel from PyQt5.QtGui import QIcon,QCursor,QColor import GetPoetry import style class Reader(QWidget): mystyle = style.UiSyle().style def __init__(self): super().__init__() self.config_index=self.readconfig() self.index=self.config_index self.ReaderUI() self.maxindex=GetPoetry.GetPoetryDetail.getMaxIndex(GetPoetry) #self.mystyle=style.UiSyle() def ReaderUI(self): '''setup reader's UI''' # leftFrame self.leftFrame=QFrame() self.leftFrame.setMinimumWidth(200) ## add Frame self.readerFrame = QFrame() self.setObjectName("readerFrame") self.pageButtonFrame = QFrame() self.setObjectName("pageButtonFrame") ###Reader frame ##### add readerFrame widgets self.titleEdit=QLineEdit("title") self.titleEdit.setObjectName("titleEdit") self.authorEdit=QLineEdit("author") self.dynastyEdit=QLineEdit("dynasty") self.contentEidt=QTextEdit("content") self.authFrame=QFrame() #### readerFrame widgets Layout self.readerLayout = QVBoxLayout() ##### authFrame Layout ##### self.authFrameLayout = QHBoxLayout() self.authFrameLayout.addStretch(2) self.authFrameLayout.addWidget(self.authorEdit,1) self.authFrameLayout.addWidget(self.dynastyEdit,1) self.authFrameLayout.addStretch(2) self.authFrame.setLayout(self.authFrameLayout) ##### authFrame Layout ##### self.readerLayout.addWidget(self.titleEdit) self.readerLayout.addWidget(self.authFrame) self.readerLayout.addWidget(self.contentEidt) self.readerFrame.setLayout(self.readerLayout) ### pageButtonFrame #### add pageButtonFrame widgets self.nextButton=QPushButton("下一篇") self.nextButton.setObjectName("nextButton") self.previewButton=QPushButton("上一篇") self.previewButton.setObjectName("previewButton") self.readIndexEdit=QLineEdit("readIndexEdit") #### pageButtonFrame widgets Layout self.pageButtonLayout=QHBoxLayout() self.pageButtonLayout.addWidget(self.previewButton) self.pageButtonLayout.addStretch(1) self.pageButtonLayout.addWidget(self.readIndexEdit) self.pageButtonLayout.addStretch(1) self.pageButtonLayout.addWidget(self.nextButton) self.pageButtonFrame.setLayout(self.pageButtonLayout) ## leftFrame Layout self.leftFrameLayout=QVBoxLayout() self.leftFrameLayout.addWidget(self.readerFrame) self.leftFrameLayout.addWidget(self.pageButtonFrame) self.leftFrame.setLayout(self.leftFrameLayout) # right listView self.titleListView=QListView() self.listModel=QStringListModel() #self.title_list=[str(n) for n in range(1,11)] #self.listModel.setStringList(self.title_list) #self.titleListView.setModel(self.listModel) self.titleListView.setMinimumWidth(50) self.titleListView.setMaximumWidth(150) # mainwindow layout self.mainwindowFrame=QFrame() self.mainwindowLayout=QHBoxLayout() self.mainwindowLayout.addWidget(self.leftFrame) self.mainwindowLayout.addWidget(self.titleListView) self.mainwindowFrame.setLayout(self.mainwindowLayout) self.mainwindowFrame.setStyleSheet("background-color:pink") # window buttons self.minButton=QPushButton("—") self.closeButton=QPushButton("×") self.closeButton.setObjectName("closeButton") self.minButton.setObjectName("minButton") self.minButton.clicked.connect(self.showMinimized) self.closeButton.clicked.connect(self.close) self.windownButtonFrame=QFrame() self.windownButtonLayout=QHBoxLayout() self.windownButtonLayout.addStretch(18) self.windownButtonLayout.addWidget(self.minButton,1) self.windownButtonLayout.addWidget(self.closeButton,1) self.windownButtonFrame.setLayout(self.windownButtonLayout) self.windownButtonFrame.setAttribute(Qt.WA_TranslucentBackground) # self layout self.mainlayout=QVBoxLayout() self.mainlayout.addWidget(self.windownButtonFrame) self.mainlayout.addWidget(self.mainwindowFrame) self.setLayout(self.mainlayout) #主窗口属性设置 self.setWindowTitle("唐诗宋词") self.setWindowIcon(QIcon("icon.jpg")) self.setGeometry(100,100,1000,800) self.setWindowFlag(Qt.FramelessWindowHint) self.setAttribute(Qt.WA_TranslucentBackground) #插入内容 self.putAll() #按钮链接到动作 self.nextButton.clicked.connect(self.nextButtonAction) self.previewButton.clicked.connect(self.previewButtonAction) self.titleListView.clicked.connect(self.titleListAction) #美化界面 #self.qssStyle=open("style.txt","rt",encoding="utf-8").read() self.setStyleSheet(self.mystyle) self.titleEdit.setAlignment(Qt.AlignCenter) self.authorEdit.setAlignment(Qt.AlignCenter) self.dynastyEdit.setAlignment(Qt.AlignCenter) self.contentEidt.setAlignment(Qt.AlignCenter) def readconfig(self): try: f=open("config.txt","rt") last_index=eval(f.read()) f.close() except: f1=open("config.txt","wt") f1.write("1") last_index=1 f1.close() return last_index def writeconfig(self): f2=open("config.txt","w") f2.write(str(self.index)) f2.close() def putTitle(self): title=GetPoetry.GetPoetryDetail.getTitle(GetPoetry,self.index) self.titleEdit.setReadOnly(False) self.titleEdit.setText(title) self.titleEdit.setReadOnly(True) def putAuthor(self): author=GetPoetry.GetPoetryDetail.getAuthorname(GetPoetry,self.index) self.authorEdit.setReadOnly(False) self.authorEdit.setText(author) self.authorEdit.setReadOnly(True) def putDynasty(self): dynasty=GetPoetry.GetPoetryDetail.getPubtime(GetPoetry,self.index) self.dynastyEdit.setReadOnly(False) self.dynastyEdit.setText(dynasty) self.dynastyEdit.setReadOnly(True) def putContent(self): content=GetPoetry.GetPoetryDetail.getContent(GetPoetry,self.index) self.contentEidt.setReadOnly(False) self.contentEidt.setText(content) self.contentEidt.setReadOnly(True) def putTitleList(self): titlelist=GetPoetry.GetPoetryDetail.getNotelist(GetPoetry) self.listModel.setStringList(titlelist) self.titleListView.setModel(self.listModel) self.titleListView.setCurrentIndex(self.listModel.index(self.index)) def putReadIndex(self): self.readIndexEdit.setReadOnly(False) string="正在阅读:第{: ^5}篇" self.readIndexEdit.setText(string.format(self.index+1)) self.readIndexEdit.setReadOnly(True) def putAll(self): self.putAuthor() self.putContent() self.putDynasty() self.putTitle() self.putTitleList() self.putReadIndex() def previewButtonAction(self): if self.index>0: self.index-=1 self.putAll() def nextButtonAction(self): if self.index<self.maxindex: self.index+=1 self.putAll() def titleListAction(self): self.index=self.titleListView.currentIndex().row() self.putAll() def mousePressEvent(self, event): if event.button()==Qt.LeftButton: self.m_drag=True self.m_DragPosition=event.globalPos()-self.pos() event.accept() self.setCursor(QCursor(Qt.OpenHandCursor)) def mouseMoveEvent(self, QMouseEvent): if Qt.LeftButton and self.m_drag: self.move(QMouseEvent.globalPos()-self.m_DragPosition) QMouseEvent.accept() def mouseReleaseEvent(self, QMouseEvent): self.m_drag=False self.setCursor(QCursor(Qt.ArrowCursor)) if __name__ == "__main__": app=QApplication(sys.argv) myReader=Reader() myReader.show() sys.exit(app.exec_()) ``` Qss代码如下: ```css QWidget { font: 10pt "微软雅黑"; background:transparent; border:0px; border-radius:30px } QLineEdit { border:0px } QFrame#pageButtonFrame { border:0px } QTextEdit { border:1px solid red; border-radius:20px } QListView { border:1px solod red; border-radius:10px } QLineEdit#titleEdit { font:18pt "微软雅黑"; } QPushButton#previewButton { border:2px solid red; color:#FF6600;font-size:8pt; padding :8px; border-radius:8px } QPushButton#previewButton:hover { color:white; border:1px solid red; background:#FF6600; } QPushButton#nextButton:hover { background:#FF6600; color:white; border:1px solid red; } QPushButton#nextButton { border:2px solid red; color:#FF6600;font-size:8pt; padding :8px; border-radius:8px } QPushButton#closeButton:hover { background-color:red; border-radius:10px; border:0px; color:white } QPushButton#closeButton { border-radius:10px; border:2px solid red; color:red; font-weight:700 } QPushButton#minButton:hover { background-color:pink; border-radius:10px; border:0px;color:white; } QPushButton#minButton { border-radius:10px; border:2px solid pink; color:pink; font-weight:700 } ``` 实际效果如图:![图片说明](https://img-ask.csdn.net/upload/201906/11/1560257058_167819.png)
为什么PyQt5的QSS的QPushBotton的background-color设置无效?
PyQt5的QSS的QPushBotton的background-color设置无效。 [QT样式表设置背景色 background-color无效的原因](https://blog.csdn.net/qq_31073871/article/details/79965015 "")这篇文章中的方法无效。 主程序代码如下: ```python import sys from PyQt5.QtWidgets import QWidget,QPushButton,QLineEdit,QTextEdit,QHBoxLayout,QVBoxLayout,QLabel,QListView,QFrame,QApplication from PyQt5.QtCore import QEvent,Qt,QStringListModel from PyQt5.QtGui import QIcon,QCursor,QColor import GetPoetry import style class Reader(QWidget): mystyle = style.UiSyle().style def __init__(self): super().__init__() self.config_index=self.readconfig() self.index=self.config_index self.ReaderUI() self.maxindex=GetPoetry.GetPoetryDetail.getMaxIndex(GetPoetry) #self.mystyle=style.UiSyle() def ReaderUI(self): '''setup reader's UI''' # leftFrame self.leftFrame=QFrame() self.leftFrame.setMinimumWidth(200) ## add Frame self.readerFrame = QFrame() self.setObjectName("readerFrame") self.pageButtonFrame = QFrame() self.setObjectName("pageButtonFrame") ###Reader frame ##### add readerFrame widgets self.titleEdit=QLineEdit("title") self.titleEdit.setObjectName("titleEdit") self.authorEdit=QLineEdit("author") self.dynastyEdit=QLineEdit("dynasty") self.contentEidt=QTextEdit("content") self.authFrame=QFrame() #### readerFrame widgets Layout self.readerLayout = QVBoxLayout() ##### authFrame Layout ##### self.authFrameLayout = QHBoxLayout() self.authFrameLayout.addStretch(2) self.authFrameLayout.addWidget(self.authorEdit,1) self.authFrameLayout.addWidget(self.dynastyEdit,1) self.authFrameLayout.addStretch(2) self.authFrame.setLayout(self.authFrameLayout) ##### authFrame Layout ##### self.readerLayout.addWidget(self.titleEdit) self.readerLayout.addWidget(self.authFrame) self.readerLayout.addWidget(self.contentEidt) self.readerFrame.setLayout(self.readerLayout) ### pageButtonFrame #### add pageButtonFrame widgets self.nextButton=QPushButton("下一篇") self.nextButton.setObjectName("nextButton") self.previewButton=QPushButton("上一篇") self.previewButton.setObjectName("previewButton") self.readIndexEdit=QLineEdit("readIndexEdit") #### pageButtonFrame widgets Layout self.pageButtonLayout=QHBoxLayout() self.pageButtonLayout.addWidget(self.previewButton) self.pageButtonLayout.addStretch(1) self.pageButtonLayout.addWidget(self.readIndexEdit) self.pageButtonLayout.addStretch(1) self.pageButtonLayout.addWidget(self.nextButton) self.pageButtonFrame.setLayout(self.pageButtonLayout) ## leftFrame Layout self.leftFrameLayout=QVBoxLayout() self.leftFrameLayout.addWidget(self.readerFrame) self.leftFrameLayout.addWidget(self.pageButtonFrame) self.leftFrame.setLayout(self.leftFrameLayout) # right listView self.titleListView=QListView() self.listModel=QStringListModel() #self.title_list=[str(n) for n in range(1,11)] #self.listModel.setStringList(self.title_list) #self.titleListView.setModel(self.listModel) self.titleListView.setMinimumWidth(50) self.titleListView.setMaximumWidth(150) # mainwindow layout self.mainwindowFrame=QFrame() self.mainwindowLayout=QHBoxLayout() self.mainwindowLayout.addWidget(self.leftFrame) self.mainwindowLayout.addWidget(self.titleListView) self.mainwindowFrame.setLayout(self.mainwindowLayout) self.mainwindowFrame.setStyleSheet("background-color:pink") # window buttons self.minButton=QPushButton("—") self.closeButton=QPushButton("×") self.closeButton.setObjectName("closeButton") self.minButton.setObjectName("minButton") self.minButton.clicked.connect(self.showMinimized) self.closeButton.clicked.connect(self.close) self.windownButtonFrame=QFrame() self.windownButtonLayout=QHBoxLayout() self.windownButtonLayout.addStretch(18) self.windownButtonLayout.addWidget(self.minButton,1) self.windownButtonLayout.addWidget(self.closeButton,1) self.windownButtonFrame.setLayout(self.windownButtonLayout) self.windownButtonFrame.setAttribute(Qt.WA_TranslucentBackground) # self layout self.mainlayout=QVBoxLayout() self.mainlayout.addWidget(self.windownButtonFrame) self.mainlayout.addWidget(self.mainwindowFrame) self.setLayout(self.mainlayout) #主窗口属性设置 self.setWindowTitle("唐诗宋词") self.setWindowIcon(QIcon("icon.jpg")) self.setGeometry(100,100,1000,800) self.setWindowFlag(Qt.FramelessWindowHint) self.setAttribute(Qt.WA_TranslucentBackground) #插入内容 self.putAll() #按钮链接到动作 self.nextButton.clicked.connect(self.nextButtonAction) self.previewButton.clicked.connect(self.previewButtonAction) self.titleListView.clicked.connect(self.titleListAction) #美化界面 #self.qssStyle=open("style.txt","rt",encoding="utf-8").read() self.setStyleSheet(self.mystyle) self.titleEdit.setAlignment(Qt.AlignCenter) self.authorEdit.setAlignment(Qt.AlignCenter) self.dynastyEdit.setAlignment(Qt.AlignCenter) self.contentEidt.setAlignment(Qt.AlignCenter) def readconfig(self): try: f=open("config.txt","rt") last_index=eval(f.read()) f.close() except: f1=open("config.txt","wt") f1.write("1") last_index=1 f1.close() return last_index def writeconfig(self): f2=open("config.txt","w") f2.write(str(self.index)) f2.close() def putTitle(self): title=GetPoetry.GetPoetryDetail.getTitle(GetPoetry,self.index) self.titleEdit.setReadOnly(False) self.titleEdit.setText(title) self.titleEdit.setReadOnly(True) def putAuthor(self): author=GetPoetry.GetPoetryDetail.getAuthorname(GetPoetry,self.index) self.authorEdit.setReadOnly(False) self.authorEdit.setText(author) self.authorEdit.setReadOnly(True) def putDynasty(self): dynasty=GetPoetry.GetPoetryDetail.getPubtime(GetPoetry,self.index) self.dynastyEdit.setReadOnly(False) self.dynastyEdit.setText(dynasty) self.dynastyEdit.setReadOnly(True) def putContent(self): content=GetPoetry.GetPoetryDetail.getContent(GetPoetry,self.index) self.contentEidt.setReadOnly(False) self.contentEidt.setText(content) self.contentEidt.setReadOnly(True) def putTitleList(self): titlelist=GetPoetry.GetPoetryDetail.getNotelist(GetPoetry) self.listModel.setStringList(titlelist) self.titleListView.setModel(self.listModel) self.titleListView.setCurrentIndex(self.listModel.index(self.index)) def putReadIndex(self): self.readIndexEdit.setReadOnly(False) string="正在阅读:第{: ^5}篇" self.readIndexEdit.setText(string.format(self.index+1)) self.readIndexEdit.setReadOnly(True) def putAll(self): self.putAuthor() self.putContent() self.putDynasty() self.putTitle() self.putTitleList() self.putReadIndex() def previewButtonAction(self): if self.index>0: self.index-=1 self.putAll() def nextButtonAction(self): if self.index<self.maxindex: self.index+=1 self.putAll() def titleListAction(self): self.index=self.titleListView.currentIndex().row() self.putAll() def mousePressEvent(self, event): if event.button()==Qt.LeftButton: self.m_drag=True self.m_DragPosition=event.globalPos()-self.pos() event.accept() self.setCursor(QCursor(Qt.OpenHandCursor)) def mouseMoveEvent(self, QMouseEvent): if Qt.LeftButton and self.m_drag: self.move(QMouseEvent.globalPos()-self.m_DragPosition) QMouseEvent.accept() def mouseReleaseEvent(self, QMouseEvent): self.m_drag=False self.setCursor(QCursor(Qt.ArrowCursor)) if __name__ == "__main__": app=QApplication(sys.argv) myReader=Reader() myReader.show() sys.exit(app.exec_()) ``` QSS代码如下 ```css QWidget { font: 10pt "微软雅黑"; background:transparent; border:0px; border-radius:30px } QLineEdit { border:0px } QFrame#pageButtonFrame { border:0px } QTextEdit { border:1px solid red; border-radius:20px } QListView { border:1px solod red; border-radius:10px } QLineEdit#titleEdit { font:18pt "微软雅黑"; } QPushButton#previewButton { border:2px solid red; color:#FF6600;font-size:8pt; padding :8px; border-radius:8px } QPushButton#previewButton:hover { color:white; border:1px solid red; background:#FF6600; } QPushButton#nextButton:hover { background:#FF6600; color:white; border:1px solid red; } QPushButton#nextButton { border:2px solid red; color:#FF6600;font-size:8pt; padding :8px; border-radius:8px } QPushButton#closeButton:hover { background-color:red; border-radius:10px; border:0px; color:white } QPushButton#closeButton { border-radius:10px; border:2px solid red; color:red; font-weight:700 } QPushButton#minButton:hover { background-color:pink; border-radius:10px; border:0px;color:white; } QPushButton#minButton { border-radius:10px; border:2px solid pink; color:pink; font-weight:700 } ```
这个电子钟的代码错哪了?
![图片说明](https://img-ask.csdn.net/upload/201602/04/1454542791_499562.jpg) ![图片说明](https://img-ask.csdn.net/upload/201602/04/1454542804_591115.jpg) ``` #include "digiclock.h" #include <QPalette> #include <QTimer> #include <QTime> #include <QMouseEvent> DigiClock::DigiClock(QWidget *parent): QLCDNumber(parent) { QPalette p=QPalette(); p.setColor(QPalette::Window,Qt::blue); setPalette(p); setWindowFlags(Qt::FramelessWindowHint); setWindowOpacity(0.5); QTimer *timer=new QTimer(this); connect(timer,SIGNAL(timeout()),this,SLOT(showTime())); timer->start(1000); showTime(); resize(150,60); showColon=true; } void DigiClock::showTime() { QTime time=QTime::currentTime(); QString text=time.toString("hh:mm"); if(showColon) { text[2]=':'; showColon=false; } else { text[2]=' '; showColon=true; } display(text); } void DigiClock::mousePressEvent(QMouseEvent *event) { if(event->button()==Qt::LeftButton) { dragPosition=event->globalPos()-frameGeometry().topLeft(); event->accept(); } if(event->button()==Qt::RightButton) { close(); } } void DigiClock::mouseMoveEvent(QMouseEvent *event) { if(event->buttons()&Qt::LeftButton) { move(event->globalPos()-dragPosition); event->accept(); } } ```
用qt写的五子棋界面,请问为什么第一行和第一列 不能落棋子? 大佬 bai'tuo
# ![图片说明](https://img-ask.csdn.net/upload/201903/10/1552210863_538638.jpg) ChessWidget::ChessWidget(QWidget *parent) : QWidget(parent) { ui.setupUi(this); this->setFixedSize(800, 660); this->setAutoFillBackground(true); QPalette palette; palette.setColor(QPalette::Window, QColor("#B1723C")); this->setPalette(palette); for (int i = 0; i < 15; ++i) { for (int j = 0; j < 15; ++j) { chess[i][j] = empyt; } } } ChessWidget::~ChessWidget() { } void ChessWidget::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true);//反走样 QPen pen; pen.setColor(QColor("#8D5822")); pen.setWidth(7); painter.setPen(pen); QBrush brush; brush.setColor(QColor("#EEC085")); brush.setStyle(Qt::SolidPattern); painter.setBrush(brush); painter.drawRect(10, 10, 620, 620); QPainter painters(this); painters.setRenderHint(QPainter::Antialiasing, true); int i, j; for (i = 0; i <= 15; ++i) { painters.drawLine(20, 20 + i * 40, 620, 20 + i * 40); painters.drawLine(20 + i * 40, 20, 20 + i * 40, 620); } brush.setStyle(Qt::SolidPattern); for (i = 0; i < 15; ++i) { for (j = 0; j < 15; ++j) { if (chess[i][j] == BLACK) { brush.setColor(Qt::black); painters.setBrush(brush); painters.drawEllipse(QPoint((i) * 40 + 20, (j ) * 40 + 20), 20, 20); } else if (chess[i][j] == WHITE) { brush.setColor(Qt::white); painters.setBrush(brush); painters.drawEllipse(QPoint((i) * 40 + 20, (j) * 40 + 20), 20, 20); } } } } void ChessWidget::mousePressEvent(QMouseEvent *e) { int x, y; if (e->x() >= 20 || e->x() <= 620 || e->y() >= 20 || e->y() <= 620) { x = (e->x()-20)/40; y = (e->y()-20)/40; if (chess[x][y]==empyt) { chess[x][y] = player++ % 2 + 1; } } update(); } ``` ``` ``` ``` ``` ```
关于QTsocket Client客户端 进不去槽函数
代码如下: using namespace std; Client::Client(QObject *parent) : QObject(parent) { connect(&client,SIGNAL(connected()), this, SLOT(startTransfer())); connect(&client, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(connectError(QAbstractSocket::SocketError))); connect(&client, SIGNAL(readyRead()), this, SLOT(startRead())); } Client::~Client() { client.close(); } void Client::startTransferhandle(int chan,int val) { qDebug(">>>>>>>>>>>>>>>>>>>>>>>>"); qDebug()<<"chan:"<<chan<<"\t"<<"val:"<<val<<endl; /* QString setvalue = QString("%1:%2:%3").arg("SET").arg(chan).arg(val); const char* str = qPrintable(setvalue); // client.write(id ,13); client.write(str);*/ } void Client::start(QString address, quint16 port) { QHostAddress addr(address); client.connectToHost(addr,port); } void Client::startTransfer() { CV = new ChanwithVal; connect(CV, SIGNAL(sendATT(int,int)), this, SLOT(startTransferhandle(int,int))); char error[100] = "connect success"; cout << error << endl; client.write(error,100); } void Client::connectError(QAbstractSocket::SocketError) { char error[100] = "connect error"; cout << error << endl; } void Client::startRead() { char buffer[100] = {0}; client.read(buffer,client.bytesAvailable()); cout << "server say:" << buffer << endl; client.close(); Client.h文件 class Client : public QObject { Q_OBJECT public: explicit Client(QObject* parent = 0); ~Client(); void start(QString address, quint16 port); public slots: void startTransfer(); void startRead(); void connectError(QAbstractSocket::SocketError); private: class ChanwithVal *CV; QTcpSocket client; // QString userStr; private slots: void startTransferhandle(int,int); }; ChanwithVal.h文件 namespace Ui { class ChanwithVal; } class ChanwithVal : public QDialog { Q_OBJECT QPoint move_point; bool mouse_press; public: explicit ChanwithVal(QWidget *parent = 0); ~ChanwithVal(); void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); signals: void setATT(int, int, int); void sendATT(int,int); private: Ui::ChanwithVal *ui; ChanwithVal.cpp文件 ChanwithVal::ChanwithVal(QWidget *parent) : QDialog(parent), ui(new Ui::ChanwithVal) { ui->setupUi(this); ui->spinBox_chan->setMaximum(4); ui->spinBox_chan->setMinimum(1); ui->spinBox_val->setMaximum(120); ui->spinBox_val->setMinimum(0); // ui->horizontalSlider_setAtt->setEnabled(false); connect(ui->ChanButton_OK, SIGNAL(clicked()), this, SLOT(getChanAndVal())); void ChanwithVal::getChanAndVal(void) { // QString qstr; #ifdef DEBUGMODE qDebug("Channel:%d, Value:%d", ui->spinBox_chan->value(), ui->spinBox_val->value()); qDebug("second window button clicked"); #endif emit setATT(ui->spinBox_chan->value(), ui->spinBox_val->value(), 1); emit sendATT(ui->spinBox_chan->value(), ui->spinBox_val->value());
PyQt5中如何在lable中加载的图片上绘制矩形框呢?
我的程序是通过摄像头采集一帧图像,点击开始标记按钮后显示在按钮左侧的lable中(灰色框)。 我希望可以在lable中加载的一帧图像中通过点击鼠标左键开始绘制矩形,按住左键拖动时改变矩形的形状,松开左键后完成绘制。(和lableImg软件类似)。 请问如何实现上述功能呢?我目前找到的方法是使用QPainter来实现,但是在我的代码中该如何实现呢?万分感谢! ![图片说明](https://img-ask.csdn.net/upload/201812/12/1544601796_693173.png) 附上我的完整代码如下: ``` # -*- coding: utf-8 -*- import sys import cv2 from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import * # ~ class MyLabel(QLabel): # ~ def paintEvent(self, event): # ~ width = self.pos2[0]-self.pos1[0] # ~ height = self.pos2[1] - self.pos1[1] # ~ qp = QPainter() # ~ qp.begin(self) # ~ qp.drawRect(self.pos1[0], self.pos1[1], width, height) # ~ qp.end() # ~ def mousePressEvent(self, event): # ~ self.pos1[0], self.pos1[1] = event.pos().x(), event.pos().y() # ~ print("clicked") # ~ def mouseReleaseEvent(self, event): # ~ self.pos2[0], self.pos2[1] = event.pos().x(), event.pos().y() # ~ print("released") # ~ self.update() class Ui_train_window(QtWidgets.QWidget): def setupUi(self, train_window): train_window.setObjectName("train_window") train_window.resize(690, 600) train_window.setMaximumSize(QtCore.QSize(690, 600)) self.horizontalLayoutWidget = QtWidgets.QWidget(train_window) self.horizontalLayoutWidget.setGeometry(QtCore.QRect(0, 10, 681, 80)) self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget) self.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.horizontalLayout.setObjectName("horizontalLayout") self.lab_enter_name = QtWidgets.QLabel(self.horizontalLayoutWidget) self.lab_enter_name.setObjectName("lab_enter_name") self.horizontalLayout.addWidget(self.lab_enter_name) self.le_username = QtWidgets.QLineEdit(self.horizontalLayoutWidget) self.le_username.setObjectName("le_username") self.horizontalLayout.addWidget(self.le_username) self.lab_enter_pw = QtWidgets.QLabel(self.horizontalLayoutWidget) self.lab_enter_pw.setObjectName("lab_enter_pw") self.horizontalLayout.addWidget(self.lab_enter_pw) self.le_userpw = QtWidgets.QLineEdit(self.horizontalLayoutWidget) self.le_userpw.setObjectName("le_userpw") self.le_userpw.setEchoMode(QLineEdit.Password) self.horizontalLayout.addWidget(self.le_userpw) self.label = QtWidgets.QLabel(self.horizontalLayoutWidget) self.label.setObjectName("label") self.horizontalLayout.addWidget(self.label) self.le_ipadr = QtWidgets.QLineEdit(self.horizontalLayoutWidget) self.le_ipadr.setObjectName("le_ipadr") self.horizontalLayout.addWidget(self.le_ipadr) self.btn_openIPcam = QtWidgets.QPushButton(self.horizontalLayoutWidget) self.btn_openIPcam.setMinimumSize(QtCore.QSize(50, 10)) self.btn_openIPcam.setObjectName("btn_openIPcam") self.horizontalLayout.addWidget(self.btn_openIPcam) self.show = QtWidgets.QLabel(train_window) self.show.setGeometry(QtCore.QRect(15, 110, 531, 371)) self.show.setObjectName("show") self.show.setStyleSheet(("border:2px solid lightgray")) self.verticalLayoutWidget = QtWidgets.QWidget(train_window) self.verticalLayoutWidget.setGeometry(QtCore.QRect(560, 100, 111, 381)) self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.btn_start = QtWidgets.QPushButton(self.verticalLayoutWidget) self.btn_start.setObjectName("btn_start") self.verticalLayout.addWidget(self.btn_start) self.combo_label = QtWidgets.QComboBox(self.verticalLayoutWidget) self.combo_label.setObjectName("combo_label") self.combo_label.addItem("") self.combo_label.addItem("") self.combo_label.addItem("") self.combo_label.addItem("") self.combo_label.addItem("") self.combo_label.addItem("") self.verticalLayout.addWidget(self.combo_label) self.btn_save = QtWidgets.QPushButton(self.verticalLayoutWidget) self.btn_save.setObjectName("btn_save") self.verticalLayout.addWidget(self.btn_save) self.btn_finish = QtWidgets.QPushButton(self.verticalLayoutWidget) self.btn_finish.setObjectName("btn_finish") self.verticalLayout.addWidget(self.btn_finish) self.horizontalLayoutWidget_2 = QtWidgets.QWidget(train_window) self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(0, 500, 681, 71)) self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2") self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2) self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.lab_stepnum = QtWidgets.QLabel(self.horizontalLayoutWidget_2) self.lab_stepnum.setObjectName("lab_stepnum") self.horizontalLayout_2.addWidget(self.lab_stepnum) self.le_stepnm = QtWidgets.QLineEdit(self.horizontalLayoutWidget_2) self.le_stepnm.setObjectName("le_stepnm") self.horizontalLayout_2.addWidget(self.le_stepnm) self.lab_batchsize = QtWidgets.QLabel(self.horizontalLayoutWidget_2) self.lab_batchsize.setObjectName("lab_batchsize") self.horizontalLayout_2.addWidget(self.lab_batchsize) self.le_batchsize = QtWidgets.QLineEdit(self.horizontalLayoutWidget_2) self.le_batchsize.setObjectName("le_batchsize") self.horizontalLayout_2.addWidget(self.le_batchsize) self.btn_pretrain = QtWidgets.QPushButton(self.horizontalLayoutWidget_2) self.btn_pretrain.setObjectName("btn_pretrain") self.horizontalLayout_2.addWidget(self.btn_pretrain) self.btn_retrain = QtWidgets.QPushButton(self.horizontalLayoutWidget_2) self.btn_retrain.setObjectName("btn_retrain") self.horizontalLayout_2.addWidget(self.btn_retrain) self.show.raise_() self.horizontalLayoutWidget.raise_() self.verticalLayoutWidget.raise_() self.horizontalLayoutWidget_2.raise_() self.retranslateUi(train_window) self.btn_openIPcam.clicked.connect(self.IPinfo) self.btn_start.clicked.connect(self.labledata) QtCore.QMetaObject.connectSlotsByName(train_window) def retranslateUi(self, train_window): _translate = QtCore.QCoreApplication.translate train_window.setWindowTitle(_translate("train_window", "训练工具")) self.lab_enter_name.setText(_translate("train_window", "输入IP摄像头用户名:")) self.lab_enter_pw.setText(_translate("train_window", "输入IP摄像头密码:")) self.label.setText(_translate("train_window", "IP地址")) self.btn_openIPcam.setText(_translate("train_window", "连接IP摄像头")) self.show.setText(_translate("train_window", "")) self.btn_start.setText(_translate("train_window", "开始标记")) self.combo_label.setItemText(0, _translate("train_window", "a")) self.combo_label.setItemText(1, _translate("train_window", "b")) self.combo_label.setItemText(2, _translate("train_window", "c")) self.combo_label.setItemText(3, _translate("train_window", "d")) self.combo_label.setItemText(4, _translate("train_window", "e")) self.combo_label.setItemText(5, _translate("train_window", "f")) self.btn_save.setText(_translate("train_window", "保存")) self.btn_finish.setText(_translate("train_window", "标记结束")) self.lab_stepnum.setText(_translate("train_window", "迭代次数:")) self.lab_batchsize.setText(_translate("train_window", "batchsize:")) self.btn_pretrain.setText(_translate("train_window", "预训练")) self.btn_retrain.setText(_translate("train_window", "重新训练")) def IPinfo(self): username = self.le_username.text() password = self.le_userpw.text() ipaddress = self.le_ipadr.text() #cam_rtsp_addr = "rtsp://" + username + ":" + password + "@" + ipaddress + "/h264/ch33/main/av_stream" #self.camcapture = cv2.VideoCapture(cam_rtsp_addr) self.camcapture = cv2.VideoCapture(0) self.timer = QtCore.QTimer() self.timer.start() self.timer.setInterval(0.3) self.timer.timeout.connect(self.camshow) def camshow(self): global showImage _ , camimg = self.camcapture.read() camimg = cv2.cvtColor(camimg, cv2.COLOR_BGR2RGB) showImage = QtGui.QImage(camimg.data, camimg.shape[1], camimg.shape[0], QtGui.QImage.Format_RGB888) def labledata(self): self.show.setPixmap(QtGui.QPixmap.fromImage(showImage)) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) Window = QtWidgets.QWidget() ui = Ui_train_window() ui.setupUi(Window) Window.show() sys.exit(app.exec_()) ```
求C++大神注释一下这个代码
#include <QPainter> #include <QtGui/QApplication> #include <QMouseEvent> #include<ctime> #include <QtGui> #include "dialog.h" #include "ui_dialog.h" using namespace std; Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { source_picture_show=false; ui->setupUi(this); ui->spinBox->setMinimum(2);//设置最小值 ui->spinBox->setValue(4); //ui是界面,spinBox是界面中的一个控件,setValue是设置值。给界面中的spinBox设置一个值为4 n=ui->spinBox->value();//获取spinBox中的值,并将其赋给n //n=4; N=n*n; a = new int* [n+2]; for(int i=0; i <n+2; i++) a[i] = new int[n+2]; wsubsize=100; hsubsize=100; bak.load(":/new/prefix1/background3.png"); Bak=bak; setbak(); ui->verticalWidget->setGeometry(n*wsubsize,10,100,150); //wsize=400; //hsize=400; //move(100,10); //max_n=5; //initpicture(); //update(); } Dialog::~Dialog() { delete ui; } void Dialog::setbak() { Bak=Bak.scaled( n*wsubsize , n*hsubsize,Qt::IgnoreAspectRatio, Qt::SmoothTransformation); QPainter pb(&Bak); for (int i=0;i<=n*wsubsize/127;i++ ) for (int j=0;j<=n*hsubsize/127;j++) pb.drawPixmap( i*127, j*127, bak); } void Dialog::paintEvent(QPaintEvent *) { //move( (QApplication::desktop()->width() - width())/2, (QApplication::desktop()->height() - height())/2); //()<<"start paint"; //setFixedHeight(n*hsubsize); //setFixedWidth(n*wsubsize+100); int i,j,p; QPainter painter(this); if (source_picture_show) painter.drawPixmap( 0, 0, pix); else { painter.drawPixmap( 0, 0, Bak); for (int l=1;l<=pixmaps.size();l++) { i=(l-1)%n+1; j=(l-1)/n+1; p=a[i][j]-1; if (p<pixmaps.size()-1) painter.drawPixmap( (i-1)*wsubsize, (j-1)*hsubsize, pixmaps[p]); } } } void Dialog::mousePressEvent(QMouseEvent *m) { if (source_picture_show) return; else { int x = m->pos().x(); int y = m->pos().y(); hit(x/wsubsize+1 , y/hsubsize+1); } } void Dialog::hit(int i,int j) { if (i<1 || j<1 || i>n || j>n) return; if (a[i-1][j]==N) { a[i-1][j]=a[i][j]; a[i][j]=N; } else if (a[i+1][j]==N) { a[i+1][j]=a[i][j]; a[i][j]=N; } else if (a[i][j-1]==N) { a[i][j-1]=a[i][j]; a[i][j]=N; } else if (a[i][j+1]==N) { a[i][j+1]=a[i][j]; a[i][j]=N; } update(); if (check()) { QMessageBox msgBox(this); msgBox.setText(tr("success!")); msgBox.exec(); //initrandom(); //refresh(); } } void Dialog::randomp() { for(int i=0; i <n+2; i++) for(int j=0; j <n+2; j++) { if (i==0 || j==0 || i==n+1 || j==n+1) a[i][j]=0; else a[i][j]=(j-1)*n+i; } int i,j; int p; for(int l=1;l<100*N;l++) { p=findN(); i=(p-1)%n+1; j=(p-1)/n+1; switch (rand()%4) { case 0: if ((i-1)>0) swap(a[i][j],a[i-1][j]); break; case 1: if ((i+1)<n+1) swap(a[i][j],a[i+1][j]); break; case 2: if ((j-1)>0) swap(a[i][j],a[i][j-1]); break; case 3: if ((j+1)<n+1) swap(a[i][j],a[i][j+1]); break; } } } void Dialog::initpicture() { QString tempfile; //tempfile = QFileDialog::getOpenFileName(this, tr("Open")); tempfile = QFileDialog::getOpenFileName(this, tr("Open Image"), "./pictures", tr("Image Files (*.png *.jpg *.bmp)")); if (!pix.load(tempfile)) { ////()<<"?"; return; } n=ui->spinBox->value(); N=n*n; //()<<"ok4"; a = new int* [n+2]; for(int i=0; i <n+2; i++) a[i] = new int[n+2]; wsize = pix.width(); hsize = pix.height(); if (hsize>700) { pix=pix.scaled( wsize*700/hsize, 700, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); wsize = pix.width(); hsize = pix.height(); } else if (hsize<400) { pix=pix.scaled( wsize*400/hsize, 400, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); wsize = pix.width(); hsize = pix.height(); } wsubsize = wsize/n; hsubsize = hsize/n; pix = pix.copy(0,0, n*wsubsize, n*hsubsize); pixmaps.clear(); //()<<pixmaps.length(); for (int y = 0; y < n; y++) { for (int x = 0; x < n; x++) { QPixmap pieceImage = pix.copy(x*wsubsize, y*hsubsize, wsubsize, hsubsize); pixmaps.append(pieceImage); } } //pixmaps[pixmaps.size()-1]=QPixmap(subsize, subsize); //pixmaps[pixmaps.length()-1].fill(QColor(200, 200, 200)); randomp(); setbak(); setGeometry( (QApplication::desktop()->width() - (n*wsubsize+100))/2, (QApplication::desktop()->height() - n*hsubsize)/2, n*wsubsize+100,n*hsubsize); //ui->pushButton ->setGeometry(n*wsubsize+10,10,80,23); //ui->pushButton_2->setGeometry(n*wsubsize+10,50,80,23); ui->verticalWidget->setGeometry(n*wsubsize,10,100,150); update(); //move( (QApplication::desktop()->width() - width())/2, (QApplication::desktop()->height() - height())/2); //qDebug()<<QApplication::desktop()->width()<<width(); //pix.fill( &pixmaps[pixmaps.length()-1],0,0); } int Dialog::findN() { for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) if (a[i][j]==N) return n*(j-1)+i; //return 0; } bool Dialog::check() { bool good=true; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) good=good&&(a[i][j]==n*(j-1)+i); return good; } void Dialog::on_pushButton_clicked() { initpicture(); //()<<"ok"; } void Dialog::on_pushButton_2_clicked() { //setGeometry(x(),y(),2*n*subsize+100, n*subsize); if (source_picture_show) { //setFixedWidth(n*wsubsize+100); ui->pushButton_2->setText(tr("show image")); source_picture_show=false; update(); } else { //setFixedWidth(2*n*wsubsize+100); ui->pushButton_2->setText(tr("Back game")); source_picture_show=true; update(); } } void Dialog::on_spinBox_editingFinished() { }
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
日均350000亿接入量,腾讯TubeMQ性能超过Kafka
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100) 【导读】近日,腾讯开源动作不断,相继开源了分布式消息中间件TubeMQ,基于最主流的 OpenJDK8开发的
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法不过,当我看了源代码之后这程序不到50
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
MySQL数据库总结
文章目录一、数据库简介二、MySQL数据类型(5.5版本)三、Sql语句(1)Sql语句简介(2)数据定义语言DDLcreate,alter,drop(3)数据操纵语言DMLupdate,insert,delete(4)数据控制语言DCLgrant,revoke(5)数据查询语言DQLselect(6)分组查询与分页查询group by,limit四、完整性约束(单表)五、多表查询六、MySQL数
记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好。想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着”背“来记忆的,所以今天的这篇文章,讲给大家详细着讲解他们是如何通信的,让大家尽量能够理解他们之间的区别、优缺点等,这样的话,以后面试官让你举例子,你也能够顺手拈来。 1、管道 我们来看一条 Linux 的语句 netstat -tulnp | gr...
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片
相关热词 如何提升c#开发能力 矩阵乘法c# c#调用谷歌浏览器 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天
立即提问