删除布局中的所有子控件

  1. void clearLayout(QLayout* layout)
  2. {
  3. if (layout) {
  4. QLayoutItem* child = nullptr;
  5. while ((child = layout->takeAt(0)) != nullptr) {
  6. if (child->widget() != nullptr)
  7. delete child->widget();
  8. delete child;
  9. }
  10. }
  11. }

使用Qt反射框架,创建一个通用的动态创建对象的类

  1. struct StrLess
  2. {
  3. bool operator()(const char* c1, const char* c2) const noexcept { return strcmp(c1, c2) < 0; }
  4. };
  5. using MetaMap = std::map<const char*, const QMetaObject*, StrLess>;
  6. template <typename T>
  7. class ObjectCreator
  8. {
  9. public:
  10. template <typename SubT, typename = std::enable_if_t<std::is_base_of_v<T, SubT>>>
  11. bool registerMeta(const char* type) noexcept
  12. {
  13. return _metas.emplace(type, &SubT::staticMetaObject).second;
  14. }
  15. template <typename... Args>
  16. T* create(const char* type, Args&&... args) const
  17. {
  18. const auto it = _metas.find(type);
  19. if (it == _metas.cend())
  20. return nullptr;
  21. return static_cast<T*>(it->second->newInstance(std::forward<Args>(args)...));
  22. }
  23. const MetaMap& metas() const noexcept { return _metas; }
  24. private:
  25. MetaMap _metas;
  26. };

隐藏所有QDialog的小?号

  1. QApplication::setFont(QFont(QStringLiteral("Arial, Microsoft YaHei"), 12));
  2. QCoreApplication::setAttribute(Qt::AA_DisableWindowContextHelpButton, true);

硬编码查看关系型数据库表的结构:

PRAGMA table_info([Rear_FC11])

设置QTabWidget空白区域的样式:

参考链接:修改空白区域样式

  1. ui->tabWidget->setAttribute(Qt::WA_StyledBackground);
  2. ui->tabWidget->setStyleSheet("QTabWidget{background-color:black;}");
文档更新时间: 2022-09-16 03:11