QT使用笔记

label自适应显示图片大小

ui.label_3->setScaledContents(true);

/****************************************

QCombobox 设置

Qconbox = new QComboBox(this);//算法下拉菜单
Qconbox->setView(new QListView()); //设置item间距
Qconbox->setStyleSheet(“QComboBox QAbstractItemView::item { min-height: 25px; min-width: 50px; }QListView::item:selected { color: black; background-color: lightgray}”);
Qconbox->addItem(BianMa->toUnicode(“粒子滤波”));
Qconbox->addItem(BianMa->toUnicode(”  TLD  “));
Qconbox->setGeometry(105, 340, 100, 25);

**********************************

官方颜色设置

http://doc.qt.io/qt-5/stylesheet-examples.html

**************************

添加背景图片及底色

QImage image;
image.load(“back.png”);
setAutoFillBackground(true);   // 这个属性一定要设置
QPalette pal(palette());
pal.setBrush(QPalette::Window, QBrush(image.scaled(size(), Qt::IgnoreAspectRatio,
Qt::SmoothTransformation)));
setPalette(pal);
//设置背景颜色:
//this->setStyleSheet(“background-color:rgb(255,34,198)”);

如果widget是子窗口
设置背景图片

可以这样(1) :
QImage _image;
_image.load(“./videoarea.png”);
ui->widget->setAutoFillBackground(true);   // 这个属性一定要设置
QPalette pal(palette());
pal.setBrush(QPalette::Window, QBrush(_image.scaled(size(), Qt::IgnoreAspectRatio,
Qt::SmoothTransformation)));
ui->widget->setPalette(pal);
也可以这样(2) :
ui->widget->setStyleSheet(“border-image:url(./videoarea.png)”);
设置背景颜色:
ui->widget->setStyleSheet(“background-color:rgb(255,34,198)”);

总结:
1:不要在顶层窗口(无父类的窗口)中使用setStyleSheet() ,否则其一父窗口的背景不会改变,其次其子窗口的背景设置方法变得局限唯一,不能再使用其它方法!
2 :
2:如果一个一般窗口(非顶层窗口)还有子窗口,那最好不要使用setStyleSheet()来设置其背景颜色,因为虽然此时该窗口的背景设置是生效的,但是其子窗口的背景设置也变得局限唯一,只能使用setStyleSheet,而不能使用其它方法!  当然:你如果就是只想使用这种方法,那也完全可以!!
说白了就是:不要再MainWindow中使用setStyleSheet()!

************************************************************************

QT 5.6 中文显示乱码

解决:

QTextCodec * BianMa = QTextCodec::codecForName(“GBK”);
Record = new QPushButton(BianMa->toUnicode(“中文显示!”), this);

********************************************************************

\moc”: No such file or directory

原因可能是重复包含头文件,删除部分不必要的头文件则问题解决了

*******************************************************************

1、在利用OpenCV 配合QT调用摄像头显示是会出现卡死的现象

原因可能是QT程序陷入了循环中,没法进入图片显示阶段,所以在循环中需要添加  qApp->processEvents();

while (capV.read(img))
{
QImage image = QImage((const uchar*)img.data, img.cols, img.rows, QImage::Format_RGB888).rgbSwapped();
lable->clear();
lable->setPixmap(QPixmap::fromImage(image));
lable->resize(img.cols, img.rows);
lable->show();

qApp->processEvents();
}

1、警告、信息对话框

  使用QMessageBox类的静态方法
  int ret = QMessageBox::warning(this, tr(“Application”),
  tr(“The document has been modified./n”
  ”Do you want to save your changes?”),
  QMessageBox::Yes | QMessageBox::Default,
  QMessageBox::No,
  QMessageBox::Cancel | QMessageBox::Escape);
  if (ret == QMessageBox::Yes)
  return save();
  else if (ret == QMessageBox::Cancel)
  return false;
  或者简单点儿:

  QMessageBox::information(this, “关于”,”盲人辅助系统(管理端)!/nVersion:1.0/nNo Copyright”);

2、QT中中文字体乱码的原因是没有定义相关的转换,可以使用使用tr()函数进行转换!!!

解决方法:在main函数中加入下面三条语句,但并不提倡
  QTextCodec::setCodecForLocale(QTextCodec::codecForName(“UTF-8”));
  QTextCodec::setCodecForCStrings(QTextCodec::codecForName(“UTF-8”));
  QTextCodec::setCodecForTr(QTextCodec::codecForName(“UTF-8”));
  或者
  QTextCodec::setCodecForLocale(QTextCodec::codecForName(“GBK”));
  QTextCodec::setCodecForCStrings(QTextCodec::codecForName(“GBK”));
  QTextCodec::setCodecForTr(QTextCodec::codecForName(“GBK”));
  使用GBK还是使用UTF-8,依源文件中汉字使用的内码而定
  这样,就可在源文件中直接使用中文,比如:
  QMessageBox::information(NULL, “信息”, “关于本软件的演示信息”, QMessageBox::Ok,

QMessageBox::NoButtons);

3、文件控件/获取打开文件夹

QString filePaht = QFileDialog::getExistingDirectory();
if (!filePaht.isEmpty()) // ok
QRecordPath->setText(filePaht);


转载自:https://blog.csdn.net/dearLeaflet/article/details/51476739

You may also like...