Qt的一些用法(11-20)

十一、QComboBox宽度偏小,如何显示全下拉文本项。

    QComboBox *combo = new QComboBox(this);
    combo->view()->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
    combo->addItem("Combo box entry number 1");
    combo->addItem("Combo box entry number 2");
    combo->addItem("Combo box entry number 3");
    combo->setMaximumWidth(45);

十二、QComboBox如何排序。

方法1: model(), 然后使用 void QAbstractItemModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)进行排序
方法2:使用)QSortFilterProxyModel进行排序

十三、如何在QMainWindow 中菜单重定向 QWidget.

可以使用 QApplication::focusChanged()

十四、如何在QAbstractItemView中布局Icon和Text

class ListWidget : public QListWidget {
public:
   ListWidget()
   {
       QListWidgetItem *item1 = new QListWidgetItem("one");
       QListWidgetItem *item2 = new QListWidgetItem("two");
       QListWidgetItem *item3 = new QListWidgetItem("three");
       addItem(item1);
       addItem(item2);
       addItem(item3);
   }
   QStyleOptionViewItem viewOptions() const override
   {
       QStyleOptionViewItem item;
       item.init(this);
       item.displayAlignment = Qt::AlignRight;
       return item;
   }
};

十五、QWidget鼠标事件穿透

setAttribute(Qt::WA_TransparentForMouseEvents)

十六、设置文本QTextEdit段落边界

int main(int argc, char *argv[])
{

    QApplication app(argc, argv);
    QTextEdit edit;
    edit.setText("The QTextEdit widget is an advanced editor that supports "
                 "formatted rich text. ");
    edit.append("It can be used to display HTML and other rich document formats.");
    QTextDocument * doc = edit.document();
    QTextCursor cursor(doc);
    cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor);
    if(1){
        QTextBlockFormat tbf = cursor.blockFormat();
        tbf.setLeftMargin(100);
        tbf.setTopMargin(100);
        cursor.setBlockFormat(tbf);
    }
    else {
        QTextFrame *tf = doc->rootFrame();
        QTextFrameFormat tff = tf->frameFormat();
        tff.setMargin(50);
        tf->setFrameFormat(tff);
    }
    edit.show();
    return app.exec();
}

十七、如何将QGraphicsScene基准点移动到QGraphicsView左上角

QGraphicsView::setAlignment(Qt::AlignLeft | Qt::AlignTop) 	

十八、如何使用QComboBox,使它看起来像文件对话框窗口。

	int main(int argc, char *argv[])
	{
	
	    QApplication a(argc, argv);
	    QComboBox cb;
	    QTreeView *tv = new QTreeView;
	    tv->header()->hide();
	    QStandardItemModel *sim = new QStandardItemModel(1, 1);
	    QStandardItem *si = new QStandardItem;
	    QPixmap pix(16, 16);
	    pix.fill(Qt::red);
	    si->setText("C:\\");
	    si->setIcon(pix);
	    QStandardItem *childSi = new QStandardItem;
	    childSi->setText("windows");
	    pix.fill(Qt::blue);
	    childSi->setIcon(pix);
	    si->insertRow(0, childSi);
	    sim->setItem(0, 0, si);
	
	    cb.setModel(sim);
	    cb.setModelColumn(0);
	    tv->setRootIsDecorated(false);
	    cb.setView(tv);
	    cb.show();
	    QTimer::singleShot(0, tv, SLOT(expandAll()));
	    return a.exec();
	}

十九、获得QTreeWidget所有可见项

class TreeWidget : public QTreeWidget {
    Q_OBJECT
public:
    TreeWidget(QWidget *parent = nullptr) : QTreeWidget(parent)
    {
        QStringList list;
        list << "An item";
        QTreeWidgetItem *item1 = new QTreeWidgetItem(list);
        for (int i = 0; i < 100; i++) {
            item1->addChild(new QTreeWidgetItem(item1, list));
        }
        QTreeWidgetItem *item2 = new QTreeWidgetItem(list);
        QTreeWidgetItem *item3 = new QTreeWidgetItem(list);
        QTreeWidgetItem *item4 = new QTreeWidgetItem(list);
        addTopLevelItem(item1);
        addTopLevelItem(item2);
        addTopLevelItem(item3);
        addTopLevelItem(item4);
        item1->setExpanded(true);
    }
public :
  void test1()
  {
    QTreeWidgetItem *myItem = itemAt(0,0);
    if (myItem) {
      qDebug() << "I am visible";
      myList << myItem;
    }
    while (itemBelow(myItem)) {
      if (viewport()->rect().contains(visualItemRect(itemBelow(myItem)))) {
        myItem = itemBelow(myItem);
        myList << myItem;
        qDebug() << "I am visible";
      }else{
        qDebug() << "I am visible";
        myList << myItem;
        break;
      }}
    qDebug() << myList.count() << " visible items" ;
  }
  QList <QTreeWidgetItem*>myList;
};

Qt内存泄露检查工具

Qt并没有自带工具。推荐使用:
Purify on Windows and on Linux we use Valgrind.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值