qt QLineEdit如何用正则表达式限制只允许输入数字和x

qt QLineEdit如何用正则表达式限制只允许输入数字和x(身份证号)?

3个回答

QRegExp regExp{"[x]{0,1}[0-9]{0,m}"};
lineEdit->setValidator(new QRegExpValidator(regExp, this));
QRegExp可以用一个y正则表达式初始化,忘了是加花括号还是圆括号了,方括号里的是要匹配的字符,后面花括号里的表示的是匹配的最少次数到最多次数

你按你的要求去设正则表达式就行 正则不会的话上网查一下 我上面只是个格式

如果匹配先是一个x字符 然后就是15-16个数字 那正则表达式就可以写成[x][0-9]{15,16} 以此为例 你自己推出你想要的怎么写吧

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
QT中QLineedit输出问题
本人想用lineedit输出一段信息。信息结构是A:23 B:44 C:56其中A,B,C为数据的名称,而数字为程序处理过的变量。但本人只知道Qlineedit的输出方法为line("abc",this),中间穿插不了经过处理后的数据。所以我想知道有没有什么方法能让我按照我的想法输出。我的输出类似于C中的Printf("a:%d,b:%,c:%",a,b,c);这样就数据和数据的名称一起输出了。求大神指导
QT QLineEdit光标问题
继承QLineedit类,重写Fousinevent和Focusoutevent判断在哪个文本框编辑,可是两个文本框都有光标在闪![图片说明](https://img-ask.csdn.net/upload/201508/26/1440591373_695517.png) 类中的两个事件代码是: void SpecialLineEdit::focusInEvent(QFocusEvent *){ this->setEnabled(true); this->setFocus(); if(this->text()==InitialText){ this->clear(); } } void SpecialLineEdit::focusOutEvent(QFocusEvent *){ if(this->text()==NULL){ this->setText(InitialText); } this->clearFocus(); }
Windows系统 QT QLineEdit installEventFilter release以后不显示?
1.Windows系统下,qt环境正常,QLineEdit installEventFilter以后,Debug模式正常,Release后无法显示。 ``` ui->lineEditGroupName->setMinimumWidth(200); ui->lineEditGroupName->installEventFilter(this); ```
qlineedit编辑过程中回车问题?
qt中qlineedit编辑过程中回车会发出两次信号吗?怎么避免呢?用哪个信号最接近?
QT中文输入与显示的问题
我是windows系统。我用的是vs2012编写qt程序,我已经向vs中添加了qt类库。现在我遇到了中文输入和显示的问题。我一向窗口部件Qlable或Qlineedit显示中文就出现乱码,我在网上百度的小样都运行不了,说是我没有定义setCodecForTr函数,但哪个函数怎么定义啊,我以为是头文件中自动包含了定义和实现呢。 #include "mywindow.h" #include <QtWidgets/QApplication> #include <QTextCodec> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK")); QLabel hello(QObject::tr("你好")); hello.setWindowTitle(QObject::tr("终于搞定中文")); hello.show(); mywindow w; w.show(); return a.exec(); }
Qt输入框密码样式设置为*不成功,有人知道原因?
我的开发环境是VS2013+qt5.7.0, 我在qtdesigner对输入框QLineEdit的 echoMode设置为Password,然后样式表设置为 ``` #myedt { lineedit-password-character:42; } ``` ctrl+r预览是能得到**的密码密码样式 ![图片说明](https://img-ask.csdn.net/upload/202001/17/1579273904_792148.png) 但是程序运行起来后,样式就不生效了,运行之后图片如下: ![图片说明](https://img-ask.csdn.net/upload/202001/17/1579275451_243431.png) 有人知道为什么吗?
qt中如何根据类名动态创建qt默认的控件类实例
需要根据从外部读取类名来创建类的实例,类大多为qt自带的控件类,如QWidget,QLineEdit等。有没有不用继承这些类就可以动态创建的方法?
嵌入式qt蜂鸣器问题
我现在是在做嵌入式应用,使用Linux qt做开发环境。现在我希望每次按钮和点击QListWidget中的选项时系统的蜂鸣器可以蜂鸣一下(底层驱动已弄好)。我现在能重写notify(),在里面添加if((obj->metaObject()->className() == QLineEdit::staticMetaObject.className){ GPIO_SYS_BUZZ_ON;//蜂鸣器蜂鸣 usleep(30000); GPIO_SYS_BUZZ_OFF; }判断事件窗口是按钮就让蜂鸣器蜂鸣一下,但我现在的问题是,我不知道怎么让系统知道我点击了QListWidget下其中的(QListWidgetItem?),因为QListWidgetItem没有staticMetaObject.className()!有没有什么办法解决?求指导,谢谢啦!
QT中QByteArray转换成QString,有遇到过的麻烦进来帮忙一下
我是用ZIGBEE串口收到温湿度数据后让QT编写的一个串口助手来读取之后显示在QLineEdit上 QByteArray temp = myCom->readAll(); 想把这个temp转换成QString类型,然后利用QStringList把数据分解出来显示在QLineEdit上,但是一直显示是空白, 在QTextBrowser上就可以显示。这个是什么问题呢?麻烦大神
qt UDP 如何绑定目的ip
lineEdit = new QLineEdit(this); QString ip_dest; udpSocket=new QUdpSocket(this); port=69; //tftp ip_dest =lineEdit->text(); udpSocket->bind(ip_dest,port); 报错 :G:\qt\projects\test\test125\mainwindow.cpp:24: error: C2664: “bool QAbstractSocket::bind(const QHostAddress &,quint16,QAbstractSocket::BindMode)”: 不能将参数 1 从“QString”转换为“const QHostAddress &” 原因如下: 无法从“QString”转换为“const QHostAddress” 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
QT 如何在其他cpp文件中调用Mainwindow中的单文本框
MainWindow w2; QString Starttime = w2.starttime->text(); QString Endtime= w2.endtime->text(); 报错信息如下: src/plot.cpp: In member function 'void Plot::saveToFile()': src/plot.cpp:222: error: invalid use of incomplete type 'struct QLineEdit' src/plot.h:17: error: forward declaration of 'struct QLineEdit' src/plot.cpp:223: error: invalid use of incomplete type 'struct QLineEdit' src/plot.h:17: error: forward declaration of 'struct QLineEdit'
qt中自定义槽函数怎么调用该类中的控件指针
就是想把lineEdit里面的值在slider里面显示, 就是在我自定义的槽函数里面调用了构造函数中的控件指针,结果显示的是野指针,请问我应该怎么改 部分代码如下: ``` //widget.h class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); QSlider *slider; QLineEdit *edit; public slots: void ChangeValue(); }; ``` ``` //widget.cpp 控件的布局什么的,还定义了一个定时器,定时触发槽函数 Widget::Widget(QWidget *parent) : QWidget(parent) { QLineEdit *edit = new QLineEdit("25"); QSlider *slider = new QSlider(Qt::Vertical); slider->setRange(0,100); slider->setValue(0); slider->setTickPosition(QSlider::TicksLeft); QLabel *label = new QLabel("0"); QHBoxLayout *cLayout = new QHBoxLayout; cLayout->addWidget(label,0,Qt::AlignRight); cLayout->addWidget(slider,0,Qt::AlignLeft); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(edit); mainLayout->addLayout(cLayout); setLayout(mainLayout); slider->setFocus(); QTimer *timer1 = new QTimer(); timer1->setInterval(500); timer1->start(); connect(slider,SIGNAL(valueChanged(int)),label,SLOT(setNum(int))); connect(timer1,SIGNAL(timeout()),this,SLOT(ChangeValue())); } Widget::~Widget(){} void Widget::ChangeValue(){ QString s = edit->text(); int value = s.toInt(); slider->setValue(value); } ```
QT paintEvent(QPaintEvent *)画图问题 急急急
#include "widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) { setFixedSize(600,600); QLabel *label = new QLabel(tr("Images side is 50 !")); label->setFixedHeight(50); QLineEdit *edit = new QLineEdit(tr("50")); //QLineEdit *edit2 = new QLineEdit(); QPushButton *button1 = new QPushButton(tr("Random")); button1->setFixedHeight(50); QPushButton *button2 = new QPushButton(tr("Previous")); button2->setFixedHeight(50); QPushButton *button3 = new QPushButton(tr("Next")); button3->setFixedHeight(50); QGroupBox *box = new QGroupBox; QRadioButton *radio1 = new QRadioButton(tr("3*3")); QRadioButton *radio2 = new QRadioButton(tr("5*5")); QVBoxLayout *vbox = new QVBoxLayout; vbox->addWidget(radio1); vbox->addWidget(radio2); box->setLayout(vbox); QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(label); layout->addWidget(edit); layout->addWidget(button1); //layout->addWidget(edit2); layout->addWidget(button2); layout->addWidget(button3); layout->addWidget(box); layout->setAlignment(Qt::AlignTop); setLayout(layout); L=edit->text().toInt();//**这里** //QString str = QString::number(L); //edit2->setText(str); connect(button1,SIGNAL(clicked()),this,SLOT(change())); } void Widget::change() { //this->repaint(); this->update(); } void Widget::random() { int m = qrand()%100; if(m<=20){ color = false; }else{ color = true; } } void Widget::paintEvent(QPaintEvent *) { int length; int i=0; int j=70;//**这里** //length=edit->text().toInt();//为什么用这两行行代码程序就崩溃了,要怎样才能实现根据edit中输入的数值 //L=edit->text().toInt(); // 来刷新我生成矩形的数目啊 length=L; QPainter painter(this); for(int m=0;m<=length;m++){ for(int n=0;n<=length;n++){ painter.begin(this); random(); if(color){ painter.setBrush(QBrush(Qt::white,Qt::SolidPattern)); }else{ painter.setBrush(QBrush(Qt::black,Qt::SolidPattern)); } painter.setPen(QPen(Qt::gray)); painter.drawRect(i,j,i+10,j+10); painter.end(); i=i+10; } i=0; j=j+10; } }
QT TABLEWIDGET 中添加了delegate,程序能正常跑,但是用到那个功能的时候就崩溃了
我在 Mainwindow.h 里定义了 class UserIDDelegate : public QItemDelegate { Q_OBJECT public : UserIDDelegate(QObject *parent = 0): QItemDelegate(parent) { } QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const { QLineEdit *editor = new QLineEdit(parent); QRegExp regExp( "[0-9]{0,10}" ); editor->setValidator( new QRegExpValidator(regExp, parent)); return editor; } void setEditorData(QWidget *editor, const QModelIndex &index) const { QString text = index.model()->data(index, Qt::EditRole).toString(); QLineEdit *lineEdit = static_cast <QLineEdit*>(editor); lineEdit->setText(text); } void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { QLineEdit *lineEdit = static_cast <QLineEdit*>(editor); QString text = lineEdit->text(); model->setData(index, text, Qt::EditRole); } void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const { editor->setGeometry(option.rect); } }; 然后在mainwindow.cpp中的构造函数里用到了 class UserIDDelegate void MainWindow::set() { ... UserIDDelegate id; routine_tableWidget->setItemDelegateForColumn(2,&id); ... } 编译通过,程序正常跑,但用到这个功能的时候程序就崩溃了 这是啥情况,,断点调试又指向了 main() 整个人都不好了。。求大腿。。。
如何让lineedit动态获得用户的输入
test2::test2(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); mybutton1=new QPushButton("push this to input messages.",this); mybutton1->setGeometry(150,200,300,100); mybutton2=new QPushButton("exit",this); mybutton2->setGeometry(400,300,100,100); myedit=new QLineEdit("1",this); myedit->setGeometry(100,100,300,100); connect(mybutton2,SIGNAL(clicked()),this,SLOT(close())); connect(mybutton1,SIGNAL(clicked()),this,SLOT(get_inf()));//获得lineedit输入的信号和槽函数 } void test2::get_inf() { emit return_message(); } int test2::return_message() { temp=0; s=myedit->text(); temp=s.toInt(); return temp; } 我本意是想按下获取信息的按钮(mybutton1)再获取信息,但经过试验,我发现获取信息的函数早就在程序一运行就获取了,(例如我一开始在lineedit中写入了数字1)在程序一运行那个1就被获取了,而后续我在运行出来的窗口改数字后,在按button1时,那个并没有被获取,求解答
QT5信号槽绑定成功后,为什么槽函数没有执行?求解
我是在list类中做了一个界面,并绑定类槽函数;然后加到类mainwindow中,但是槽函数没有执行,但是connect返回值true说明已经办定成功了啊?为什么没有执行呢?槽函数我也声明了,初学者求拍醒啊。。。 我贴上源码吧! // 这是类list的: //----------------------------list.h #ifndef LIST_H #define LIST_H #include <QListView> #include <QStringListModel> #include <QStringList> #include <QWidget> #include <QPushButton> #include <QLineEdit> class list : public QWidget { Q_OBJECT public: list(); QStringListModel *ml; QListView *vl; QPushButton *btn_insert; QPushButton *btn_remove; QWidget *qw; QWidget *addUI(); QLineEdit *line; public slots: void l_insert(); }; #endif // LIST_H //----------------------------list.cpp list::list() { ml=new QStringListModel; vl=new QListView; btn_insert=new QPushButton("插入"); btn_remove=new QPushButton("删除"); qw=new QWidget; line=new QLineEdit("insert:"); bool a=connect(btn_insert,SIGNAL(clicked()),this,SLOT(l_insert())); qDebug()<<a<<endl; } QWidget * list::addUI(){ QStringList str; str<<"通道1"<<"通道2"; ml->setStringList(str); vl->setModel(ml); QHBoxLayout *h1=new QHBoxLayout; QFormLayout *f1=new QFormLayout; h1->addWidget(btn_insert); h1->addWidget(btn_remove); f1->addRow(vl); f1->addRow(line); f1->addRow(h1); qw->setLayout(f1); return qw; }; void list::l_insert(){ qDebug()<<"@@@@@"; QString str=line->text(); qDebug()<<"str"<<endl; int row=vl->currentIndex().row(); QModelIndex index=ml->index(row); ml->setData(index,str); vl->setCurrentIndex(index); vl->edit(index); }; mainwindow.cpp // 只是调用此界面 tab=new QTabWidget; QWidget *w1=new QWidget; list l1; w1=l1.addUI(); tab->addTab(w1,"QList"); setCentralWidget(tab);
关于Qt信号槽使用的问题
``` #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->OK_Button->setText(tr("OK")); ui->lineEdit->setText("Naive"); // QObject:: connect(OK_Button,SIGNAL(clicked()),lineEdit,SLOT(btn_clicked())); } void MainWindow::btn_clicked() { QString str="Hello Earth"; ui->lineEdit->setText(str); } MainWindow::~MainWindow() { delete ui; } ``` ``` #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include<QPushButton> #include<QLineEdit> #include<QString> #include <QPushButton> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; QPushButton *OK_Button; QLineEdit *lineEdit; private slots: void btn_clicked(); }; #endif // MAINWINDOW_H ``` 编译运行后编译器给出QObject::connect: No such signal MainWindow::clicked() inxxxxxxxx的提示,请问该如何解决
QT调试代码出现提示信息错误
QT调试代码中出现 Internal error: pc 0xa0520000 in read in psymtab, but not in symtab. 请问下这是问题,怎么解决?对程序有影响吗? 下面是我的代码 #include "socketwidget.h" #include <QPushButton> #include <QTextEdit> #include <QLineEdit> #include <QLabel> #include <QDebug> #include <QHostAddress> #include <QByteArray> SocketWidget::SocketWidget(QWidget *parent) : QWidget(parent) { send_btn = new QPushButton(this); send_btn->setText("send"); send_btn->setGeometry(9,268,78,23); close_btn = new QPushButton(this); close_btn->setText("close"); close_btn->setGeometry(316,268,75,23); connect_btn = new QPushButton(this); connect_btn->setText("connect"); connect_btn->setGeometry(316,20,75,23); connect(send_btn,&QPushButton::clicked,this,&SocketWidget::on_buttonSend_clicked); connect(close_btn,&QPushButton::clicked,this,&SocketWidget::on_buttonClose_clicked); connect(connect_btn,&QPushButton::clicked,this,&SocketWidget::on_buttonConnect_clicked); send_btn->setEnabled(false); close_btn->setEnabled(false); label1 = new QLabel(this); label1->setText("服务器IP:"); label1->setGeometry(9,9,72,20); label2 = new QLabel(this); label2->setText("服务器端口:"); label2->setGeometry(9,35,72,20); lineEditIP = new QLineEdit(this); lineEditIP->setText("127.0.0.1"); lineEditIP->setGeometry(87,9,223,20); lineEditPort = new QLineEdit(this); lineEditPort->setText("8888"); lineEditPort->setGeometry(87,35,223,20); textEditRead = new QTextEdit(this); textEditRead->setReadOnly(true); textEditRead->setGeometry(9,61,382,97); textEditWrite = new QTextEdit(this); textEditWrite->setGeometry(9,164,382,98); tcpSocket =NULL; //分配空间制定父对象 tcpSocket = new QTcpSocket(this); setWindowTitle("客户端"); connect(tcpSocket,&QTcpSocket::connected, [=]() { textEditRead->setText("成功和服务器连接"); send_btn->setEnabled(true); close_btn->setEnabled(true); connect_btn->setEnabled(false); } ); connect(tcpSocket,&QTcpSocket::readyRead,this,&SocketWidget::onSocketReadyRead); connect(tcpSocket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), this, &SocketWidget::displayError); } SocketWidget::~SocketWidget() { } void SocketWidget::onSocketReadyRead() { if(tcpSocket->bytesAvailable() <= 0) { return; } qint64 totalBytes = 0; m_buffer = NULL; //从缓存区去除数据,但是不确定取出来的字节数; QByteArray buffer= tcpSocket->readAll(); m_buffer.append(buffer); unsigned int totalLen = m_buffer.size(); textEditRead->append(buffer); //这边确实需要利用长度做while循环,因为有可能一下子读取到两条以上的完整记录,就需要进行循环处理了; //超过一条完整小于第二条完整记录时,如果已经达到包头长度就先把包头保存下来,整个过程循环往复 while (totalLen) { //与QDataStream绑定,方便操作 QDataStream packet(m_buffer); packet.setVersion(QDataStream::Qt_5_10); //不够包头长度的不处理,结束while循环 unsigned int MINSIZE = sizeof(qint64)*2; if(totalLen < MINSIZE) { //textEditRead->append(buffer); break; } //将包头读入了进来按照定义的协议,先读命令长度,再读命令的类型; packet >> totalBytes >>serverCmd; //缓存中的内容长度没有达到命令的长度,那就先结束,等足够了再来解析 if(totalLen<totalBytes) break; //足够长了就开始解析 // QDir dir(sysFilePath); //系统文件目录 // if(!dir.exists()) // dir.mkdir(sysFilePath); switch (serverCmd) { case QString_recv: { qDebug()<<"开始接收字符串..."; QByteArray datas = m_buffer.mid(MINSIZE,totalBytes-MINSIZE); QString strInfo;//数据包中的message strInfo.prepend(datas); qDebug() <<strInfo;//输出接收到的QString } break; default: //qint64 nbytes = tcpSocket->bytesAvailable(); //textEditRead->append(buffer); break; } //缓存多余的数据 buffer = m_buffer.right(totalLen - totalBytes); //截取下一个数据包的数据,留作下次读取 totalLen = buffer.size(); //更新多余的数据 m_buffer = buffer; } /* while (tcpSocket->bytesAvailable() > 0) { qint64 nbytes = tcpSocket->bytesAvailable(); QByteArray array = tcpSocket->read(nbytes); textEditRead->append(array); }*/ } void SocketWidget::on_buttonConnect_clicked() { QHostAddress localIP = QHostAddress("127.0.0.1"); //获取服务器ip和端口 QString ip = lineEditIP->text(); qint16 port = lineEditPort->text().toInt(); //tcpSocket->abort(); if(tcpSocket->bind(localIP,42055) ) { qDebug() << "1 localHost:" << localIP.toString(); qDebug() << "2 localPort:" << tcpSocket->localPort(); } tcpSocket->abort(); //主动和服务器建立连接 tcpSocket->connectToHost(ip, port); if(tcpSocket->waitForConnected(1000) ) { send_btn->setEnabled(true); close_btn->setEnabled(true); connect_btn->setEnabled(false); } else { QMessageBox::information(this, tr(" Client"), tr("连接失败,请检查后重试")); } } void SocketWidget::on_buttonSend_clicked() { //获取编辑框内容 QString str = textEditWrite->toPlainText(); //发送数据 tcpSocket->write(str.toUtf8().data() ); if(tcpSocket->waitForBytesWritten(1000) ) { textEditWrite->clear(); } else { QMessageBox::information(this, tr(" Client"), tr("内容为空,输入后从新发送")); } } void SocketWidget::displayError(QAbstractSocket::SocketError socketError) { switch (socketError) { case QAbstractSocket::RemoteHostClosedError: connect_btn->setEnabled(true); send_btn->setEnabled(false); close_btn->setEnabled(false); QMessageBox::information(this, tr(" Client"), tr("The host was disconnect. Please check and " "request again.")); textEditRead->append("服务器已断开连接"); break; case QAbstractSocket::HostNotFoundError: QMessageBox::information(this, tr(" Client"), tr("The host was not found. Please check the " "host name and port settings.")); break; case QAbstractSocket::ConnectionRefusedError: QMessageBox::information(this, tr(" Client"), tr("The connection was refused by the peer. " "Make sure the server is running, " "and check that the host name and port " "settings are correct.")); break; default: QMessageBox::information(this, tr(" Client"), tr("The following error occurred: %1.") .arg(tcpSocket->errorString())); } } void SocketWidget::on_buttonClose_clicked() { //主动和对方断开连接 tcpSocket->disconnectFromHost(); if(tcpSocket->state() == QAbstractSocket::UnconnectedState || tcpSocket->waitForDisconnected(1000) ) { tcpSocket->close(); connect_btn->setEnabled(true); send_btn->setEnabled(false); close_btn->setEnabled(false); textEditRead->append("已断开连接"); } else { QMessageBox::information(this, tr(" Client"), tr("断开连接失败,请检查后重试")); } }
我这个报了什么错?qt太难学了。
![图片说明](https://img-ask.csdn.net/upload/201601/21/1453378278_556120.jpg) ![图片说明](https://img-ask.csdn.net/upload/201601/21/1453378310_840289.jpg) ![图片说明](https://img-ask.csdn.net/upload/201601/21/1453378328_25098.jpg) ![图片说明](https://img-ask.csdn.net/upload/201601/21/1453378344_985474.jpg) ![图片说明](https://img-ask.csdn.net/upload/201601/21/1453378366_152511.jpg) ``` #include "mainwindow.h" #include "ui_mainwindow.h" #include <QTextFrame> #include <QDebug> #include <QLineEdit> #include <QDialog> #include <QPushButton> #include <QVBoxLayout> #include "mysyntaxhighlighter.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QTextDocument *document=ui->textEdit->document(); QTextFrame *rootFrame=document->rootFrame(); QTextFrameFormat format; format.setBackground(Qt::blue); format.setBorderBrush(Qt::red); format.setBorder(3); rootFrame->setFrameFormat(format); QTextFrameFormat frameFormat; frameFormat.setBackground(Qt::lightGray); frameFormat.setMargin(20); frameFormat.setPadding(50); frameFormat.setBorder(6); frameFormat.setBorderStyle(QTextFrameFormat::BorderStyle_Dotted); QTextCursor cursor=ui->textEdit->textCursor(); cursor.insertFrame(frameFormat); QAction *action_textFrame=new QAction(tr("框架"),this); connect(action_textFrame,SIGNAL(triggered()),this,SLOT(showTextFrame())); ui->mainToolBar->addAction(action_textFrame); QAction *action_textBlock=new QAction(tr("文本块"),this); connect(action_textBlock,SIGNAL(triggered()),this,SLOT(showTextBlock())); ui->mainToolBar->addAction(action_textBlock); QAction *action_font=new QAction(tr("字体"),this); action_font->setCheckable(true); connect(action_font,SIGNAL(toggled(bool)),this,SLOT(setTextFont(bool))); ui->mainToolBar->addAction(action_font); QAction *action_textFind=new QAction(tr("查找"),this); connect(action_textFind,SIGNAL(triggered()),this,SLOT(textFind())); ui->mainToolBar->addAction(action_textFind); highlighter=new MySyntaxHighlighter(ui->textEdit->document()); } void MainWindow::showTextFrame() { QTextDocument *document=ui->textEdit->document(); QTextFrame *frame=document->rootFrame(); QTextFrame::iterator it; for(it=frame->begin();it.atEnd()==0;++it) { QTextFrame *childFrame=it.currentFrame(); QTextBlock childBlock=it.currentBlock(); if(childFrame) qDebug()<<"frame"; else if(childBlock.isValid()) qDebug()<<"block:"<<childBlock.text(); } } void MainWindow::showTextBlock() { QTextDocument *document=ui->textEdit->document(); QTextBlock block=document->firstBlock(); qDebug()<<document->blockCount(); for(int i=0;i<document->blockCount();i++) { qDebug() <<tr("文本块%1,文本块首行行号为:%2,长度为:%3,内容为:").arg(i).arg(block.firstLineNumber()).arg(block.length()) <<block.text(); block=block.next(); } } void MainWindow::setTextFont(bool checked) { if(checked) { QTextCursor cursor=ui->textEdit->textCursor(); QTextBlockFormat blockFormat; blockFormat.setAlignment(Qt::AlignCenter); cursor.insertBlock(blockFormat); QTextCharFormat charFormat; charFormat.setBackground(Qt::lightGray); charFormat.setForeground(Qt::blue); charFormat.setFont(QFont(tr("宋体"),12,QFont::Bold,true)); charFormat.setFontUnderline(true); cursor.setCharFormat(charFormat); cursor.insertText(tr("测试字体")); } } void MainWindow::textFind() { QDialog *dlg=new QDialog(this); lineEdit=new QLineEdit(dlg); QPushButton *btn=new QPushButton(dlg); btn->setText(tr("查找下一个")); connect(btn,SIGNAL(clicked(bool)),this,SLOT(findNext())); QVBoxLayout *layout=new QVBoxLayout; layout->addWidget(lineEdit); layout->addWidget(btn); dlg->setLayout(layout); dlg->show(); } void MainWindow::findNext() { QString string=lineEdit->text(); bool isfind=ui->textEdit->find(string,QTextDocument::FindBackward); if(isfind) { qDebug()<<tr("行号:%1列号:%2").arg(ui->textEdit->textCursor().blockNumber()). arg(ui->textEdit->textCursor().columnNumber()); } } MainWindow::~MainWindow() { delete ui; } ```
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
死磕YOLO系列,YOLOv1 的大脑、躯干和手脚
YOLO 是我非常喜欢的目标检测算法,堪称工业级的目标检测,能够达到实时的要求,它帮我解决了许多实际问题。 这就是 YOLO 的目标检测效果。它定位了图像中物体的位置,当然,也能预测物体的类别。 之前我有写博文介绍过它,但是每次重新读它的论文,我都有新的收获,为此我准备写一个系列的文章来详尽分析它。这是第一篇,从它的起始 YOLOv1 讲起。 YOLOv1 的论文地址:https://www.c...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片...
简明易理解的@SpringBootApplication注解源码解析(包含面试提问)
欢迎关注文章系列 ,关注我 《提升能力,涨薪可待》 《面试知识,工作可待》 《实战演练,拒绝996》 欢迎关注我博客,原创技术文章第一时间推出 也欢迎关注公 众 号【Ccww笔记】,同时推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《提升能力,涨薪可待篇》- @SpringBootApplication注解源码解析 一、@SpringBootApplication 的作用是什...
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给袈...
Python语言高频重点汇总
Python语言高频重点汇总 GitHub面试宝典仓库 回到首页 目录: Python语言高频重点汇总 目录: 1. 函数-传参 2. 元类 3. @staticmethod和@classmethod两个装饰器 4. 类属性和实例属性 5. Python的自省 6. 列表、集合、字典推导式 7. Python中单下划线和双下划线 8. 格式化字符串中的%和format 9. 迭代器和生成器 10...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
ES6基础-ES6的扩展
进行对字符串扩展,正则扩展,数值扩展,函数扩展,对象扩展,数组扩展。 开发环境准备: 编辑器(VS Code, Atom,Sublime)或者IDE(Webstorm) 浏览器最新的Chrome 字符串的扩展: 模板字符串,部分新的方法,新的unicode表示和遍历方法: 部分新的字符串方法 padStart,padEnd,repeat,startsWith,endsWith,includes 字...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
web前端javascript+jquery知识点总结
Javascript javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ,语法同java类似,是一种解释性语言,边执行边解释。 JavaScript的组成: ECMAScipt 用于描述: 语法,变量和数据类型,运算符,逻辑控制语句,关键字保留字,对象。 浏览器对象模型(Br
Qt实践录:开篇
本系列文章介绍笔者的Qt实践之路。
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
为什么听过很多道理,依然过不好这一生?
记录学习笔记是一个重要的习惯,不希望学习过的东西成为过眼云烟。做总结的同时也是一次复盘思考的过程。 本文是根据阅读得到 App上《万维钢·精英日课》部分文章后所做的一点笔记和思考。学习是一个系统的过程,思维模型的建立需要相对完整的学习和思考过程。以下观点是在碎片化阅读后总结的一点心得总结。
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
一条链接即可让黑客跟踪你的位置! | Seeker工具使用
搬运自:冰崖的部落阁(icecliffsnet) 严正声明:本文仅限于技术讨论,严禁用于其他用途。 请遵守相对应法律规则,禁止用作违法途径,出事后果自负! 上次写的防社工文章里边提到的gps定位信息(如何防止自己被社工或人肉) 除了主动收集他人位置信息以外,我们还可以进行被动收集 (没有技术含量) Seeker作为一款高精度地理位置跟踪工具,同时也是社交工程学(社会工程学)爱好者...
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧...... 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
相关热词 c# 数组类型 泛型约束 c#的赛狗日程序 c# 传递数组 可变参数 c# 生成存储过程 c# list 补集 c#获得所有窗体 c# 当前秒数转成年月日 c#中的枚举 c# 计算校验和 连续随机数不重复c#
立即提问